2016-03-14 23 views
5

我正在写一个简单的应用程序读取CSV文件斯威夫特,我希望能够使用相同的代码在游乐场和作为输入文件到swift命令。如何确定银行代码是否是内部的XCode运行游乐场

要阅读游乐场文件我都用这个代码

let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv") 

我想实现这样的:

#if PLAYGROUND 
import XCPlayground 
let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv") 
#else 
let filePath = NSURL.fileURLWithPath("data.csv") 
#endif 
+0

我想你可以使用捆绑标识符以确定'runni纳克在操场上 - 我记得它像'com.apple playground'。?。 – Michael

回答

3

测试很简单:

let bundleId = NSBundle.mainBundle().bundleIdentifier ?? "" 
if bundleId.hasPrefix("com.apple.dt"){ 
     //... Your code 
} 

但我认为你已经看到了问题,一旦你做到了这一点......进口将停止在其他地方构建。我怀疑你正试图建立你已经建立了一个框架游乐场(如果没有,我不太清楚代码是如何被共享)......我解决它的框架的方式是提供一个可选的回调钩我想获得的价值...所以例如

在框架

public defaultUrlHook : (()->NSURL)? = nil 

internal var defaultUrl : NSURL { 
    return defaultUrlHook?() ?? NSURL.fileURLWithPath("data.csv") 
} 

在操场

import XCPlayground 
import YourFramework 

defaultUrlHook = {()->NSURL in 
     return XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv") 
} 

//Do your thing.... 
相关问题