微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确定Swift代码是否在XCode Playground中运行

我正在编写一个简单的应用程序,在 Swift中读取CSV文件,我希望能够在Playground中使用相同的代码,并将其作为swift命令的输入文件.

要在Playground中读取文件,我必须使用此代码

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....

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐