APIにアクセスしようとするときに、私は私のスウィフトコードで一般的な「失敗NSURLSession/NSURLConnection HTTP負荷(kCFStreamErrorDomainSSL、-9802)」の問題にエラーが生じています。しかし、NSAppTransportSecurityでinfo.plistの一般的な回避策を試してみると、「EXC_BAD_INSTRUCTION(コード= EXC_i386_INVOP、サブコード= 0x0)」が表示されます。以下は私のコードですが、私の人生では何が起こっているのか理解できません。ここでの援助は非常に高く評価されます。EXC_BAD_INSTRUCTION(コード= EXC_i386_INVOP、サブコード= 0x0の)クラッシュ
let jsonDict = try NSJSONSerialization.JSONObjectWithData(data2, options: NSJSONReadingOptions.MutableContainers) as! [String:Any]
強制キャスト、as!
が失敗している:
func getMoviesNowPlayingData(page:Int, completion: (dict: [String:Any]) ->()) {
let urlString : String = "https://api.themoviedb.org/3/movie/now_playing?api_key=ebea8cfca72fdff8d2624ad7bbf78e4c&page=\(page)"
let escapedUrlString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let apiURL = NSURL(string:escapedUrlString!)
let session = NSURLSession.sharedSession()
session.dataTaskWithURL(apiURL!, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) in
//NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802) occurs here
do {
if let data2 = data {
let jsonDict = try NSJSONSerialization.JSONObjectWithData(data2, options: NSJSONReadingOptions.MutableContainers) as! [String:Any]
//EXC_BAD_INSTRUCTION (code=EXC_i386_INVOP, subcode=0x0) crash occurs here
completion(dict: jsonDict)
}
} catch {
//handle NSError
print("error")
}
}).resume()
}
@Robそれを指摘してくれてありがとう!私はまだスウィフトでキャスティングのハングを取得しています。 JSONは標準の辞書形式ですが、AnyとAnyObjectの違いは何ですか? – pennyloaf
関連していませんが、私はあなたがちょうど戻っているスウィフト辞書にこれをキャストしているときに、なぜ可変コンテナを使用しているのかはっきりしていません。 JSONObjectWithDataのオプションとして '[]'を使うことをお勧めします。 – Rob