目标

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

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

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

    代码:

    以下是我所做的尝试:
    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.\">"
    

    问题:

    调试描述似乎最接近我想要的。
  • 我错过了什么吗?
  • 提取可以显示给用户的错误字符串的正确方法是什么?
  • 最佳答案

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

    所以,那将是:

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

    关于ios - CKError localizedDescription,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49856270/

    10-09 02:20