在记录良好的字符串
NSLocalizedDescriptionKey
、NSLocalizedFailureReasonErrorKey
、NSLocalizedRecoveryOptionsErrorKey
和 NSLocalizedRecoverySuggestionErrorKey
中,还有 NSLocalizedFailureErrorKey
,它在文档中缺乏任何类型的描述。这是做什么用的?
来自标题:
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 卷空间不足。”
让我引用来自
-localizedDescription
的NSError.h
的文档(我只对其应用了一些布局和样式):
用户可呈现的主要错误消息,例如
:NSFileReadNoPermissionError
>>文件“文件名”无法打开 因为你没有权限查看。<<
这条消息理想情况下应该指出失败的原因以及失败的原因。
这个值要么来自
,或NSLocalizedDescriptionKey
+NSLocalizedFailureErrorKey
,或NSLocalizedFailureReasonErrorKey
.NSLocalizedFailureErrorKey
构建描述所采取的步骤包括:
在
中寻找NSLocalizedDescriptionKey
, 按原样使用值(如果存在)。userInfo
在
中查找NSLocalizedFailureErrorKey
。如果存在,请使用, 与userInfo
的值(如果可用)结合。NSLocalizedFailureReasonErrorKey
从
获取NSLocalizedDescriptionKey
, 按原样使用值(如果存在)。userInfoValueProvider
从
获取NSLocalizedFailureErrorKey
。如果 呈现、使用、结合userInfoValueProvider
的价值 如果有的话。NSLocalizedFailureReasonErrorKey
在
中查找NSLocalizedFailureReasonErrorKey
或从userInfo
;与通用“操作失败”消息结合。userInfoValueProvider
最后的手段本地化但几乎不美观的字符串制造 域和代码。结果永远不会为零。