【发布时间】:2018-09-26 03:09:45
【问题描述】:
目标
- 我想在应用程序中向用户显示遇到的
CKError作为警报。 - 所以我想从可以显示给用户的错误中提取字符串。
注意:此问题与要显示的 UI 代码无关。只想从错误中提取一个有意义的字符串。
我尝试使用本地化描述,但它似乎不包含适当的字符串
代码:
以下是我所做的尝试:
po error
<CKError 0x1c464cea0: "Network Unavailable" (3/NSURLErrorDomain:-1009); "The Internet connection appears to be offline.">
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<String>
- some : "<CKError 0x1c064eaf0: \"Network Unavailable\" (3/NSURLErrorDomain:-1009); \"The Internet connection appears to be offline.\">"
问题:
调试描述似乎最接近我想要的。
- 我错过了什么吗?
- 提取可以显示给用户的错误字符串的正确方法是什么?
【问题讨论】:
-
尝试(错误为!CKError).localizedDescription
-
与不投射效果相同
-
我认为最好的方法是将错误代码映射到错误消息。我相信这是 Apple 推荐的,但不记得我在哪里看到的。
-
@DuncanGroenewald 我同意,如果我们想要相关消息,我认为自定义消息是唯一的选择。这绝对可以改进,可能是提出错误的好主意
标签: ios swift cloudkit nserror ckerror