Ich bin gerade bei meinen ersten Schritten mit
Alles anzeigen
NSURLSession
. Ich möchte eine einfache Funktion schreiben, die eine URL entgegen nimmt und den HTML-Code zurückspielt. Der DataTask
an sich funktioniert; über println(data)
kann ich sehen, dass der Code ankommt. Allerdings asynchron. Mein return theResult
am Ende der Funktion gibt nur den initialen Wert "#!?" zurück. Innerhalb des if data != nil {}
kann ich allerdings kein return setzen, ebensowenig kann ich return am Ende der Funktion weglassen und bin demzufolge leider etwas ratlos, wie ich der Funktion sagen kann, dass sie erst returned, wenn Daten vorliegen?Quellcode
- func loadHTML(targetURL: String) -> String {
- var theTargetURL = NSURL(string:targetURL)
- var theResult = "#!?"
- var request: NSURLRequest = NSURLRequest(URL:theTargetURL)
- let config = NSURLSessionConfiguration.defaultSessionConfiguration()
- let session = NSURLSession(configuration: config)
- let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
- println(NSString(data: data, encoding: NSASCIIStringEncoding))
- if error != nil {
- println(error.localizedDescription)
- theResult = "error"
- }
- if data != nil {
- theResult = NSString(data: data, encoding: NSASCIIStringEncoding)
- println("RECEIVED\t\t\(countElements(theResult)) CHARS")
- }
- });
- task.resume()
- return theResult
- }