2015-01-05 11 views
10

In Objective-C die folgende Syntax möglich war:Swift NSURLConnection sendSynchronousRequest

NSHTTPURLResponse *response = nil; 
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 
if ([response statusCode] == 404) 
{ 
} 

Jetzt in Swift ich verwendet habe:

var response : AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil 
let urlData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: err) 

die funktioniert, aber ich kann status nicht mehr zugreifen, denn wenn ich NSHTTPURLResponse gibt einen Fehler zurück, dass NSURLResponse benötigt wird!

Kennen Sie einen Weg, dies zu lösen?

+0

, ich hoffe, du bist nie 'sendSynchronousRequest' aus dem Haupt-Thread verwenden. Man würde immer eine asynchrone Anfrage bevorzugen (besonders eine stornierbare). – Rob

Antwort

25

Statt manuell eine AutoreleasingUnsafeMutablePointer erstellen, können Sie einfach & verwenden Sie den Wert, den Sie einen Zeiger zu wollen, wickeln senden - wird Ihr Code viel einfacher:

var response: NSURLResponse? 
var error: NSError? 
let urlData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) 

Nach dem Aufruf Sie werfen müssen Antwort auf NSHTTPURLResponse diese Eigenschaften zuzugreifen:

if let httpResponse = response as? NSHTTPURLResponse { 
    println(httpResponse.statusCode) 
} 
Offensichtlich
+0

Funktioniert perfekt. Vielen Dank! – user3573256

+1

@Rob Danke, behoben. –

Verwandte Themen