【问题标题】:NsError and userinfoNsError 和用户信息
【发布时间】:2013-10-11 18:21:31
【问题描述】:

我正在构建一个 IOS SDK。

基本上,我正在发出异步网络请求(API 调用)。当出现错误时,返回一个字典,键为“error_key”、“error_description”、“error_code”。

如何使用 NSError 表示这三个信息?

我正在做以下事情:

 NSMutableDictionary* details = [NSMutableDictionary dictionary];
[details setValue: error_description forKey: NSLocalizedDescriptionKey];
[NSError errorWithDomain: APPErrorDomain code: error_code userInfo: details];

如何更改用户信息以同时考虑 error_key?

【问题讨论】:

  • 好吧,新语法非常适合:NSDictionary* details = @{key1:value1,key2:value2};
  • 投票结束,因为试图在 NSMutableDictionary 文档中找到答案的努力不足

标签: ios objective-c


【解决方案1】:

如果您的“error_key”对应于预定义的userInfo 字典键之一,那么您应该使用正确的键将其添加到userInfo 字典中。定义的键是:

NSString * const NSLocalizedDescriptionKey;
NSString * const NSErrorFailingURLStringKey;
NSString * const NSFilePathErrorKey;
NSString * const NSStringEncodingErrorKey;
NSString * const NSUnderlyingErrorKey;
NSString * const NSURLErrorKey;
NSString * const NSLocalizedFailureReasonErrorKey;
NSString * const NSLocalizedRecoverySuggestionErrorKey;
NSString * const NSLocalizedRecoveryOptionsErrorKey;
NSString * const NSRecoveryAttempterErrorKey;
NSString * const NSHelpAnchorErrorKey;
NSString * const NSURLErrorFailingURLErrorKey;
NSString * const NSURLErrorFailingURLStringErrorKey;
NSString * const NSURLErrorFailingURLPeerTrustErrorKey;

如果它是自定义键,那么您应该使用您想要的任何键将其添加到您的 userInfo 字典中。

【讨论】:

  • 更好的答案在上下文中添加了一些东西,但并没有真正回答添加另一个 kv 对的问题
  • 我应该使用 NSLocalizedFailureReasonErrorKey 作为错误键,使用 NSLocalizedDescriptionKey 作为错误描述吗?
【解决方案2】:

userInfo 是一个简单的字典,可以包含您放入其中的任何键和值。因此,在您的情况下,只需执行以下操作:

details[@"ErrorKey"] = error_key;

然后使用这些用户详细信息创建 NSError 对象。

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2017-04-21
    相关资源
    最近更新 更多