Es kommen keine Callbacks an und damit ist das Testen schwierig.
Der Grund dafür ist einfach: Wurde die aktuelle Seite im Playground einmal abgearbeitet, werden auch alle parallel laufenden Threads beendet bzw. pausiert.
Abhilfe ist ganz einfach. Man kann der aktuellen Playground - Seite sagen das die Ausführungen weiter laufen soll.
Dafür muss die Eigenschaft "needsIndefiniteExecution" der aktuellen Playground Seite auf true gesetzt werden.
Hier die komplette Anweisung:
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
Nun kommen auch Callbacks von anderen Threads zurück.
Damit die Seite nicht durchgehend ausgeführt wird, kann die Ausführung mit folgender Anweisung beendet werden:
XCPlaygroundPage.currentPage.finishExecution()
Hier ein komplettes Beispiel für einen WebRequest im Xcode Playground:
//: Sample for HTTP Request
import UIKit
import XCPlayground
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
var str = "Hello, playground"
let url = NSURL(string: "http://danielbedarf.blogspot.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
(data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
//stop the execution
XCPlaygroundPage.currentPage.finishExecution()
}
//start the http request
task.resume()
Hinweis: die Property needIndefiniteExecution ist der Nachfolger der Funktion "XCPSetExecutionShouldContinueIndefinitely()".
Keine Kommentare:
Kommentar veröffentlichen