如何确定Swift代码是否在XCode中运行
我正在编写一个用Swift读取CSV文件的简单应用程序,我希望能够在游乐场中使用相同的代码,并将其作为如何确定Swift代码是否在XCode中运行,swift,Swift,我正在编写一个用Swift读取CSV文件的简单应用程序,我希望能够在游乐场中使用相同的代码,并将其作为Swift命令的输入文件 要在操场上读取文件,我必须使用以下代码 let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv") 我希望实现以下目标: #if PLAYGROUND import XCPlayground let filePath = XCPlaygroundSh
Swift
命令的输入文件
要在操场上读取文件,我必须使用以下代码
let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv")
我希望实现以下目标:
#if PLAYGROUND
import XCPlayground
let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv")
#else
let filePath = NSURL.fileURLWithPath("data.csv")
#endif
测试非常简单:
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....
我认为您可以使用bundle标识符来确定您正在操场上跑步——我记得它类似于
com.apple.?.playde
。