2014-06-20 65 views
0

我有以下代碼傳遞子類的變量sendSynchronousRequest方法:在夫特

var error : NSError? 
var response : NSHTTPURLResponse? 


var urlData : NSData = NSURLConnection.sendSynchronousRequest 
    (
    request, 
    returningResponse: &response, 
    error: &error 
    ) as NSData 

returningResponse採用如在參考文檔中提到的NSURLResponse一個實例。

Im使用NSHTTPURLResponse這是NSURLResponse的子類。這在Objective-C中工作正常,但我不知道如何在Swift中編寫它,因爲編譯器會在該行中引發錯誤。

的錯誤是: Cannot convert the expression's type 'NSData' to type 'inout NSHTTPURLResponse'

這是什麼意思?以及如何讓它正確?

回答

2

問題是您傳遞的方法與期望的類型不同。你仍然應該通過NSURLResponse。之後您可以投射類型:

var urlData = NSURLConnection.sendSynchronousRequest 
    (
    request, 
    returningResponse: &response, 
    error: &error 
    ) 
if let httpResponse = response as? NSHTTPURLResponse { 
    // Work with HTTP response 
} 

另請注意,可以從方法的返回類型推斷出urlData的類型。沒有必要指定類型,也不需要將結果轉換爲NSData,所以我刪除了這兩個。

+0

謝謝男人。爲我節省了很多時間 –