NsError和userinfo

时间:2013-10-11 18:21:32

标签: ios objective-c

我正在构建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?

2 个答案:

答案 0 :(得分:6)

如果您的“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字典中,并附上您想要的任何键。

答案 1 :(得分:2)

userInfo是一个简单的字典,可以包含您放入其中的任何键和值。所以在你的情况下,这只是做一些事情的事情:

details[@"ErrorKey"] = error_key;

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