gpt4 book ai didi

ios - 如何从 NSError 代码中找到错误描述?

转载 作者:行者123 更新时间:2023-12-02 19:01:39 27 4
gpt4 key购买 nike

我正在尝试找到一种比 Google 搜索更简单/更可靠的方法来从错误代码中找出 NSError 的本地化描述。

例如,我知道 NSURLErrorDomain 代码 -1003 对应于“找不到具有指定主机名的服务器”。但如果我尝试在代码中验证它,它就不匹配。

let error = NSError(domain: "NSURLErrorDomain", code: -1003)
print(error.localizedDescription)
// "The operation couldn’t be completed. (NSURLErrorDomain error -1003.)"

documentation 中查找 -1003也不匹配:“无法解析 URL 的主机名。”

所以我正在寻找一种方法来从带有函数的错误代码或具有我期望的描述的文档中找出描述。我希望有一个类似于 HTTPURLResponse.localizedString(forStatusCode:)

的函数

最佳答案

当您创建自己的 NSError 对象时,不会为您生成 localizedDescription。但是,当 URLSession 生成错误对象时,会填充本地化描述:

let url = URL(string: "https://bad.domain")!
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error as? URLError {
print(error.localizedDescription) // “A server with the specified hostname could not be found.”
}
}.resume()

因此,如果您遇到错误并想查看本地化描述,就这样做吧。如果您手动创建自己的 NSError 对象,它根本无法工作。

但通常,我们不会担心本地化描述,而是测试 URLError 的各种 code 值。 , 寻找 code.cannotFindHost :

let url = URL(string: "https://bad.domain")!
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error as? URLError {
switch error.code {
case .cannotFindHost: print("cannotFindHost")
case .cancelled: print("cancelled")
case .badURL: print("badURL")
// ...
default: break
}
}
}.resume()

或者,您也可以使用 NSError 搜索旧的 NSURLError 代码值,寻找 NSURLErrorCannotFindHost :

URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error as NSError? {
switch error.code {
case NSURLErrorCannotFindHost: print("cannotFindHost")
case NSURLErrorCancelled: print("cancelled")
case NSURLErrorBadURL: print("badURL")
// ...
default: break
}
}
}.resume()

您还可以通过按shift-command-O(字母“Oh”)“快速打开”,搜索NSURLError,取消选中快速打开对话框右上角的“Swift”按钮:

enter image description here

当您打开 NSURLError.h 文件时,您可以看到其中列出的所有代码。

但是,不,仅仅通过使用指定的域和代码创建一个 NSErrorlocalizedDescription 不会神奇地为您填充。不过,URLSession 创建带有描述的正确错误对象。

关于ios - 如何从 NSError 代码中找到错误描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65484684/

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