`NSLocalizedFailureErrorKey` 是做什么用的?

问题描述 投票:0回答:2

在记录良好的字符串

NSLocalizedDescriptionKey
NSLocalizedFailureReasonErrorKey
NSLocalizedRecoveryOptionsErrorKey
NSLocalizedRecoverySuggestionErrorKey
中,还有
NSLocalizedFailureErrorKey
,它在文档中缺乏任何类型的描述。这是做什么用的?

ios swift objective-c macos nserror
2个回答
3
投票

来自标题:

FOUNDATION_EXPORT NSErrorUserInfoKey const NSLocalizedFailureErrorKey API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
// NSString

描述失败的完整句子(或更多)。在从框架 API 收到的错误的 userInfo 字典中设置此键的值是自定义和微调 NSError 的 localizedDescription 的好方法。

例如,对于 Foundation 错误代码 NSFileWriteOutOfSpaceError,将此键的值设置为“无法保存图像库”。将允许错误的本地化描述显示为“无法保存图像库。Macintosh HD 卷空间不足。”而不是默认的(例如)“您无法保存文件 ImgDatabaseV2,因为 Macintosh HD 卷空间不足。”


0
投票

让我引用来自

-localizedDescription
NSError.h
的文档(我只对其应用了一些布局和样式):

用户可呈现的主要错误消息,例如

NSFileReadNoPermissionError

>>文件“文件名”无法打开 因为你没有权限查看。<<

这条消息理想情况下应该指出失败的原因以及失败的原因。

这个值要么来自

  • NSLocalizedDescriptionKey
    ,或
  • NSLocalizedFailureErrorKey
    +
    NSLocalizedFailureReasonErrorKey
    ,或
  • NSLocalizedFailureErrorKey
    .

构建描述所采取的步骤包括:

  1. NSLocalizedDescriptionKey
    中寻找
    userInfo
    , 按原样使用值(如果存在)。

  2. NSLocalizedFailureErrorKey
    中查找
    userInfo
    。如果存在,请使用, 与
    NSLocalizedFailureReasonErrorKey
    的值(如果可用)结合。

  3. NSLocalizedDescriptionKey
    获取
    userInfoValueProvider
    , 按原样使用值(如果存在)。

  4. NSLocalizedFailureErrorKey
    获取
    userInfoValueProvider
    。如果 呈现、使用、结合
    NSLocalizedFailureReasonErrorKey
    的价值 如果有的话。

  5. NSLocalizedFailureReasonErrorKey
    中查找
    userInfo
    或从
    userInfoValueProvider
    ;与通用“操作失败”消息结合。

  6. 最后的手段本地化但几乎不美观的字符串制造 域和代码。结果永远不会为零。

© www.soinside.com 2019 - 2024. All rights reserved.