私は、NSURLSessionを通してapiが呼び出されるアプリケーションで作業しています。 APIが正しく動作する場合は問題ありませんが、何もデータがシリアル化した後、その後、何らかのエラーに受信されないとき、私がここで間違ってやっている何ブロックが正常に動作しない
let task = session.dataTaskWithRequest(request) { (let data, let response, let error) in
do {
guard let data:NSData = data , let response: NSURLResponse = response where error == nil else {
throw error!
}
guard let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary else{
print("Serialization failed") //This block never executes even if the Serialization Fails
throw JSONError.ConversionFailed
}
guard json.valueForKey("success") != nil else {
return
}
self.apidata = json
dispatch_async(dispatch_get_main_queue()){
self.tableView.reloadData()
}
print(json.valueForKey("success")!)
}
catch let error as JSONError{
self.showalertview(error.rawValue)
print(error.rawValue)
} catch let error as NSError{
print(error.debugDescription)
}
}
task.resume()
と呼ばれることはありませんため、エラーが、他のブロックを投げます? ?
どのブロックを実行すると思われますか?シリアル化が他の 失敗したときに、私はこれを実行することを期待 – dasblinkenlight
@dasblinkenlightは、私が第三ガードブロックが呼び出された疑いがある –
{ プリント(「シリアル化に失敗しました」)//このブロックは、シリアル化が スローが をJSONError.ConversionFailed失敗しても実行したことがありません}データがないとき –