2016-03-14 10 views
5

Ich schreibe eine einfache Anwendung lesen CSV-Datei in Swift und ich möchte in der Lage sein, den gleichen Code in Playground und als Eingabedatei für den swift Befehl .Wie man bestimmt, ob ein Swift-Code in XCode Playground läuft

eine Datei im Spielplatz lesen Ich habe diesen Code

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

Ich mag so etwas wie zu erreichen, würde zu verwenden: ist

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

ich glaube, Sie die Bundle-Bezeichner verwenden können, erhalten wollten Sie zu bestimmen, "Runni ng auf dem Spielplatz - wie ich mich erinnere, ist es so etwas wie 'com.apple.?. playground'. – Michael

Antwort

3

Der Test ganz einfach:

let bundleId = NSBundle.mainBundle().bundleIdentifier ?? "" 
if bundleId.hasPrefix("com.apple.dt"){ 
     //... Your code 
} 

Aber ich denke, Sie haben das Problem bereits gesehen, sobald Sie das getan haben ... der Import wird den Build anderswo stoppen. Ich vermute, dass du versuchst, einen Spielplatz für ein Framework zu bauen, das du gebaut hast (wenn nicht, bin ich nicht ganz sicher, wie der Code geteilt wird) ... Die Art, wie ich es im Framework gelöst habe, war ein optionaler Rückruf Haken für den Wert I ... so zum Beispiel

im Rahmen

public defaultUrlHook : (()->NSURL)? = nil 

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

In Spielplatz

import XCPlayground 
import YourFramework 

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

//Do your thing.... 
Verwandte Themen