我正在使用大量的異步網絡請求(順便說一句iOS中的任何網絡請求需要異步),我正在找到方法來更好地處理來自不支持throws
的Apple dataTaskWithRequest
的錯誤。處理Swift 2中異步關閉錯誤的最佳方法是什麼?
我有這樣的代碼是:
func sendRequest(someData: MyCustomClass?, completion: (response: NSData?) ->()) {
let request = NSURLRequest(URL: NSURL(string: "http://google.com")!)
if someData == nil {
// throw my custom error
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
// here I want to handle Apple's error
}
task.resume()
}
我需要解析我可以自定義錯誤和dataTaskWithRequest
處理可能出現連接錯誤。 Swift 2引入了throws
,但是你不能拋棄Apple的封閉,因爲他們沒有拋出支持並且運行異步。
我看到唯一的方法來添加到我的完成塊NSError
返回,但正如我所知,使用NSError
是舊式的Objective-C方式。 ErrorType
只能用於投擲(afaik)。
使用Apple網絡關閉時處理錯誤的最佳和最現代的方法是什麼?據我所知,沒有辦法在異步網絡功能中引發任何使用。
您可以使用錯誤類型不拋出:現在
,可以按如下方式使用它。即在完成處理程序中返回它。也許你可能想看看Alamofire如何處理響應/錯誤https:// github。COM/Alamofire/Alamofire /斑點/主/源/ Result.swift – doschi