我正在编写一个在Swift中读取CSV文件的简单应用程序,我希望能够在Playground中使用相同的代码,并将其作为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发布于 2016-04-18 17:12:58
测试非常简单:
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")
}In游乐场
import XCPlayground
import YourFramework
defaultUrlHook = { ()->NSURL in
return XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv")
}
//Do your thing....https://stackoverflow.com/questions/35999250
复制相似问题