NSError和userInfo

6
我正在构建一个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];

我该如何更改userinfo以考虑error_key?

1
新的语法对于这个很不错:NSDictionary* details = @{key1:value1,key2:value2}; - Grady Player
由于在NSMutableDictionary文档中没有尝试寻找答案的努力,投票关闭。 - Grady Player
2个回答

9
如果你的“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字典中,使用任何您想要的键即可。

更好的答案会在上下文中添加一些内容,但并不真正回答添加另一个键值对的问题。 - Grady Player
我应该使用NSLocalizedFailureReasonErrorKey作为错误键和NSLocalizedDescriptionKey作为错误描述吗? - Kermit the Frog

3

userInfo是一个简单的字典,它可以包含您放入其中的任何键和值。因此,在您的情况下,只需要做类似以下的事情:

details[@"ErrorKey"] = error_key;

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接