2016-03-14 53 views
5

我正在寫一個簡單的應用程序讀取CSV文件斯威夫特,我希望能夠使用相同的代碼在遊樂場和作爲輸入文件到swift命令。如何確定銀行代碼是否是內部的XCode運行遊樂場

要閱讀遊樂場文件我都用這個代碼

let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv") 

我想實現這樣的:

#if PLAYGROUND 
import XCPlayground 
let filePath = XCPlaygroundSharedDataDirectoryURL.URLByAppendingPathComponent("data.csv") 
#else 
let filePath = NSURL.fileURLWithPath("data.csv") 
#endif 
+0

我想你可以使用捆綁標識符以確定'runni納克在操場上 - 我記得它像'com.apple playground'。?。 – Michael

回答

3

測試很簡單:

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.... 
相關問題