我試圖找到一種比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
生成錯誤對象時,將填充本地化描述:因此,如果您有一個錯誤,并希望看到本地化的描述,只要這樣做。如果您手動創建自己的
NSError
對象,它將無法工作。但一般來說,我們不會擔心本地化描述,而是測試
URLError
的各種code
值,尋找code
的.cannotFindHost
:或者,您也可以使用
NSError
搜索舊的NSURLError
代碼值,查找NSURLErrorCannotFindHost
:您也可以通過按shift-command-O(字母“Oh”)來“快速打開”,搜索
NSURLError
,取消選中快速打開對話框右上角的“Swift”按鈕:當您打開
NSURLError.h
文件時,您可以看到這里列出的所有代碼。但是,不,只要用指定的域和代碼創建一個
NSError
,localizedDescription
就不會神奇地為您填充。URLSession
創建帶有描述的正確錯誤對象。