2015-12-14 71 views
8

在AFNetworking 3.0中有些事情發生了變化。基本上,沒有更多的操作,而不是session data tasks。我如何從NSURLSessionDataTask獲得狀態碼?如何從NSURLSessionDataTask獲取狀態碼?

這是我的塊:

GET("users/check_email", parameters: parameters, progress: nil, success: { sessionDataTask, response in 

     // here I need status code of response 

     }) { sessionDataTask, error in 

      completionBlock(nil, NSError(sessionDataTask: sessionDataTask)) 
    } 

回答

0
NSURLSessionDataTask

具有response屬性,該屬性將與NSHTTPURLResponse類,它有statusCode屬性的一個目的來填充。

29

NSURLSessionDataTask具有response屬性,可以轉換到NSHTTPURLResponse要獲得狀態代碼:

斯威夫特例子:

if let urlResponse = sessionDataTask.response as? NSHTTPURLResponse { 
    let status = urlResponse.statusCode 
} 

Objective-C的例子:

NSInteger statusCode = 0; 

if ([sessionDataTask.response isKindOfClass:[NSHTTPURLResponse class]]) { 
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)sessionDataTask.response; 
    statusCode = httpResponse.statusCode; 
} 
+0

完成已已通過響應傳遞 –

+0

它不是相同的響應,這是來自服務器的響應,'sessionDataTask'內的響應是r從http(標題等)響應 –

+0

感謝您的答案!在sessionDataTask.response上更好地調用'isKindOfClass'。只有'YES'才能投射並獲得'statusCode'。 –