CKError localizedDescription

目标

  • 我想在应用程序中向用户显示遇到的CKError作为警报。
  • 所以我想从可以显示给用户的错误中提取字符串。

注意:此问题与要显示的UI代码无关。 只想从错误中提取有意义的字符串。

我尝试使用localizedDescription但它似乎没有包含适当的字符串

码:

以下是我的尝试:

 po error  po error.localizedDescription "The operation couldn't be completed. (CKErrorDomain error 3.)" po (error as! CKError).errorUserInfo ▿ 2 elements ▿ 0 : 2 elements - key : "NSUnderlyingError" - value : Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=https:/ ▿ 1 : 2 elements - key : "NSDebugDescription" - value : NSURLErrorDomain: -1009 po (error as? NSError)?.localizedFailureReason nil po (error as? NSError)?.localizedRecoverySuggestion nil po (error as? NSError)?.localizedRecoveryOptions nil po (error as? NSError)?.debugDescription ▿ Optional - some : "" 

问题:

调试描述似乎最接近我想要的。

  1. 我错过了什么吗?
  2. 提取我可以向用户显示的错误字符串的正确方法是什么?

看起来errorUserInfo [NSUnderlyingError]中有另一个错误。 尝试从该错误中获取localizedDescription。

那么,那将是:

 ((error as? CKError)?.errorUserInfo[NSUnderlyingErrorKey] as? NSError)?.localizedDescription 

error.localizedDescription实际上是您必须使用错误本身。

您的应用程序可以通过检查错误代码并向用户提供自己的消息来提供更好的错误消息(更加用户友好,本地化等)。

 (error as? NSError)?.code