gpt4 book ai didi

swift - URLSession dataTask 如何破译 NSURLError?

转载 作者:行者123 更新时间:2023-11-28 08:07:07 29 4
gpt4 key购买 nike

考虑这段代码:

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
}

我们遇到了一个问题,在 session.dataTask 中,data 返回为 nil,错误是某种无法破译的 NSURLError。调试它并没有给我任何有用的线索,让我知道问题可能是什么。我们已经能够确定某些 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 之间显然存在差异,但我可以向您保证,它们都可以在浏览器中正常工作并正确显示图像。

有人知道如何破译 NSURLError 或将其转换成某种可读格式吗?

如果没有,是否有人对 NSURL 可以使用的格式以及我们可能违反的格式有规范?

最佳答案

您可以检查 error 是否不为 nil,然后将其转换为 NSError。

if let error = error {
let nsError = error as NSError
print(nsError.domain)
print(nsError.code)
print(nsError.localizedDescription)
// ... check additional properties
}

关于swift - URLSession dataTask 如何破译 NSURLError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798616/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com