gpt4 book ai didi

cocoa - 处理 Swift 3 中 (NS)URLSession 的 cocoa 错误

转载 作者:行者123 更新时间:2023-12-03 17:47:59 24 4
gpt4 key购买 nike

既然 NSError 消失了,如何处理 Swift 3 中 cocoa 框架的错误?

Swift 3 改进了 NSError 桥接 - https://github.com/apple/swift-evolution/blob/master/proposals/0112-nserror-bridging.md

我从该文档中不明白的是如何使用改进的错误桥接。

假设我有以下用 Swift 2.3 编写的代码,我试图找出实际的错误是什么:

NSURLSession.sharedSession().dataTaskWithURL(url) { data, response, error in

guard let error = error { else return }
if error.domain == NSURLErrorDomain && error.code == NSURLErrorCancelled {
print("cancelled.")
} else {
print("error occured: \(error)")
}
}

相应的 Swift 3 方法根据 documentation 在其完成处理程序中提供简单的 Error :

func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask

如何将上述代码迁移到 Swift 3?我猜转换为 NSError 不是正确的答案。

最佳答案

Error 是一个协议(protocol),其中还包括潜在的 NSError

我猜转换为 NSError 正确的答案。

实际上只是可选绑定(bind)到 NSError

URLSession.shared.dataTask(with: url) { data, response, error in

guard let nserror = error as? NSError else { return }
if nserror.domain == NSURLErrorDomain && nserror.code == NSURLErrorCancelled {
print("cancelled.")
} else {
print("error occured: \(nserror)")
}
}

如果您有更多不同的错误,请使用 switch 语句和模式匹配。

关于cocoa - 处理 Swift 3 中 (NS)URLSession 的 cocoa 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42541352/

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