如何從NSError代碼中找到錯誤描述?

我試圖找到一種比Google搜索更容易/更可靠的方法,從錯誤代碼中找出NSError的本地化描述。

例如,我知道NSURLErrorDomain代碼-1003對應于“找不到具有指定主機名的服務器”。但是如果我試著用代碼驗證它,它就不匹配了。

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

在文檔中查找-1003也不匹配:“URL的主機名不能是resolved.”

因此,我正在尋找一種方法,從帶有函數的錯誤代碼或具有我期望的描述的文檔中找出描述。我希望有一個類似于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”按鈕:

當您打開NSURLError.h文件時,您可以看到這里列出的所有代碼。

但是,不,只要用指定的域和代碼創建一個NSErrorlocalizedDescription就不會神奇地為您填充。URLSession創建帶有描述的正確錯誤對象。

主站蜘蛛池模板: 亚洲日韩AV一区二区三区四区| 国内精品视频一区二区八戒| 人妻无码久久一区二区三区免费| 亚洲一区二区三区国产精品无码 | 内射白浆一区二区在线观看 | 中文字幕无码一区二区免费 | 亚洲欧美成人一区二区三区| 爆乳熟妇一区二区三区| 日韩精品一区二区午夜成人版| 久久久av波多野一区二区| 夜夜嗨AV一区二区三区| 国产日韩高清一区二区三区| 伊人精品视频一区二区三区| 精品一区二区三区在线观看| 内射少妇一区27P| 一区在线观看视频| 天堂Aⅴ无码一区二区三区| 乱人伦一区二区三区| 天天躁日日躁狠狠躁一区| 中文字幕无线码一区| 一区二区三区国产精品| 中字幕一区二区三区乱码 | 亚洲国产成人久久综合一区77| 日韩精品电影一区| 国产一区二区三区在线观看免费 | 国产一区二区三区樱花动漫| 国产一区二区三区乱码在线观看| 福利一区二区三区视频午夜观看| 久久精品无码一区二区三区日韩| 动漫精品专区一区二区三区不卡| 免费无码一区二区| 中文字幕一区日韩在线视频 | 激情综合丝袜美女一区二区| 好吊妞视频一区二区| 国产在线不卡一区| 久久精品国产一区二区三区不卡| 国产一区二区视频在线观看| 亚洲国产精品一区二区久久hs| 精品国产AV无码一区二区三区| 视频在线观看一区| 中文字幕aⅴ人妻一区二区|