2016-03-14 14 views
5

Piszę prostą aplikację czytającą plik CSV w Swift i chciałbym móc użyć tego samego kodu w Playground i jako plik wejściowy do polecenia swift .Jak ustalić, czy kod Swift działa na XCode Playground

Aby odczytać plik w Playground muszę użyć tego kodu

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

chciałbym osiągnąć coś takiego:

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

myślę, że można użyć do określenia identyfikatora wiązki Ci "Re runni ng na placu zabaw - jak pamiętam, jest to coś w rodzaju "com.apple.?. playground". – Michael

Odpowiedz

3

testu jest dość prosta:

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

Ale myślę, że już widziałem problem, gdy już to zrobisz ... import zatrzyma kompilację gdzie indziej. Podejrzewam, że próbujesz zbudować plac zabaw dla zbudowanej przez siebie architektury (jeśli nie, nie jestem całkiem pewny, jak kod jest udostępniany) ... Sposób, w jaki rozwiązałem go w ramach, polegał na zapewnieniu opcjonalnego połączenia zwrotnego. hak do wartości chciałem dostać ... tak na przykład

W ram

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

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

boiska

import XCPlayground 
import YourFramework 

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

//Do your thing.... 
Powiązane problemy