0
このコードをRay Wenderlichからテストして、URLからデータをダウンロードします。私はそれを動作させましたが、私はXcode 8.3にアップデートしました。そして今、突然それはもう動作しません。次のリンクSWIFT: Error EXC_BAD_INSTRUCTIONで問題が解決されたというアドバイスを受けましたが、try!オプションを使用するか、示唆どおりにdo-catchを追加しても、エラーは消えませんでした。ここでは、コード再びです:Xcode 8.3でloadDataFromURLを使用した場合の迅速なエラー
class func loadDataFromURL(_ url: URL, completion:@escaping (_ data: Data?, _ error: NSError?) -> Void) {
let session = URLSession.shared
// Use NSURLSession to get data from an NSURL
let loadDataTask = try! session.dataTask(with: url, completionHandler: { (data: Data?, response: URLResponse?, error: NSError?) -> Void in
if let responseError = error {
completion(nil, responseError)
print("something went wrong 1")
//activityIndicator.stopAnimating()
} else if let httpResponse = response as? HTTPURLResponse {
if httpResponse.statusCode != 200 {
let statusError = NSError(domain:"com.raywenderlich", code:httpResponse.statusCode, userInfo:[NSLocalizedDescriptionKey : "HTTP status code has unexpected value."])
completion(nil, statusError)
} else {
completion(data, nil)
//activityIndicator.stopAnimating()
}
}
} as! (Data?, URLResponse?, Error?) -> Void) //error is thrown here!!
loadDataTask.resume()
}
}
私は私が最後の行でエラーコードを取得するコードを実行すると:「スレッド1:EXEC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0の)」
NSErrorの代わりにエラーが発生するはずです。 –
はい、これはうまくいきました。私がエラーに変わったら、私はダウンキャストを外すことができました。理由は分かりませんか?とにかく、それは動作します。これをあなたの正式な答えにして、それをチェックしてもらえますか?ありがとう – kangarooChris