は、コードのこの部分を検討:URLSession dataTask NSURLErrorをどのように解読できますか?
func load(url: URL?, callback: ((UIImage?) -> Void)? = nil) -> UIImage? {
guard let url = url else {
return nil
}
if let image = cache[url] {
return image
}
guard let callback = callback else {
return nil
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = 10
let session = URLSession(configuration: config, delegate: nil, delegateQueue: OperationQueue.main)
let task = session.dataTask(with: request) { data, response, error in
guard let data = data else {
return
}
DispatchQueue.global().async {
let image = UIImage(data: data)
DispatchQueue.main.async {
self.cache[url] = image
callback(image)
}
}
}
task.resume()
return nil
}
を我々はゼロとエラーが解読不能NSURLErrorのいくつかの並べ替えであるようsession.dataTask
にdata
が返されている問題に遭遇してきました。それをデバッグしても、問題の原因は何もわかりません。私たちは、いくつかのURLが動作しているかどうかを判断することができましたが、どこに問題があるのかは不明です。問題の
URLはこれです:これは私がエラーをコピーから得るものです
http://website.com////assets//P//wa//_resampled//paddedimage400400-apicture.gif
、これは何かが、URLが間違っていることを改めて強調し:
error Error? (instance_type = 0x0000608000246930 -> 0x0000000106a2ff48 (void *)0x0000000106a2ff20: NSURLError) some
作品のURL
https://api.website.com/assets/P/wa/_resampled/picture.jpg
私は明らかに両方のURLに違いがありますが、私はcです両方ともブラウザで作業し、画像を正しく表示することを確認してください。
誰かがNSURLErrorを解読する方法を知っていますか、それとも読みやすい形式にする方法はありますか?
もしそうでなければ、NSURLが動作し、私たちが違反しているかもしれないフォーマットの仕様を誰かが持っていますか?
アップルフレームワークによってスローされた 'NSError'インスタンスには、' domain'、エラー 'code'とローカライズされた記述(' localizedDescription')があります。 – vadian
イメージをダウンロードするコードを書く必要はありません。ここに素晴らしいライブラリhttps://github.com/rs/SDWebImageがあります。これを使って! – Parimal
@vadianありがとうございました。実際には役に立ちました。 \t 'App Transport Securityポリシーがセキュア接続を必要とするため、リソースをロードできませんでした。 ' – Nico