Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定Swift代码是否在XCode中运行_Swift - Fatal编程技术网

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

如何确定Swift代码是否在XCode中运行,swift,Swift,我正在编写一个用Swift读取CSV文件的简单应用程序,我希望能够在游乐场中使用相同的代码,并将其作为Swift命令的输入文件 要在操场上读取文件,我必须使用以下代码 let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv") 我希望实现以下目标: #if PLAYGROUND import XCPlayground let filePath = XCPlaygroundSh

我正在编写一个用Swift读取CSV文件的简单应用程序,我希望能够在游乐场中使用相同的代码,并将其作为
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