首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定Swift代码是否运行在XCode游乐场内

如何确定Swift代码是否运行在XCode游乐场内
EN

Stack Overflow用户
提问于 2016-03-14 22:23:19
回答 1查看 416关注 0票数 5

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

要在游乐场读取文件,我必须使用以下代码

代码语言:javascript
复制
let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv")

我想要达到这样的目标:

代码语言:javascript
复制
#if PLAYGROUND
import XCPlayground
let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv")
#else
let filePath = NSURL.fileURLWithPath("data.csv")
#endif
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-18 17:12:58

测试非常简单:

代码语言:javascript
复制
let bundleId = NSBundle.mainBundle().bundleIdentifier ?? ""
if bundleId.hasPrefix("com.apple.dt"){
        //... Your code
}

但我想你已经看到了问题一旦你做了.导入将停止其他地方的构建。我怀疑您正在为您构建的框架构建一个游乐场(如果不是,我不太确定代码是如何被共享的).我在框架中解决这个问题的方法是为我想要得到的值提供一个可选的回调挂钩.举个例子

框架中的

代码语言:javascript
复制
public defaultUrlHook : (()->NSURL)? = nil

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

In游乐场

代码语言:javascript
复制
import XCPlayground
import YourFramework

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

//Do your thing....
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35999250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档