我正在使用一个使用JSON订阅源的应用程序,但发现如果订阅源不正确或缺少对象,它将导致我的应用程序崩溃。如何处理NSDictionary ObjectForKey JSON订阅源错误崩溃
这是供我们接收目前,通常是当Web服务的合作,我们将获得一个ID
result = {
data = {
result = (
"<null>"
);
};
success = 1;
};
}:
我目前解析这样
NSDictionary *results = [json objectForKeyOrNil:@"result"];
NSString *success = [results objectForKeyOrNil:@"success"];
NSDictionary *data = [results objectForKeyOrNil:@"data"];
NSDictionary *resultsArray = [data objectForKeyOrNil:@"result"];
最后我们进这样做,试图获得丢失的物体
NSString *test = [dictionary objectForKeyOrNil:@"id"];
而在这一点上应用程序崩溃
我正在使用objectForKeyOrNil的类别类我希望能够防止崩溃,但似乎无法正常工作。收到
- (id)objectForKeyOrNil:(id)key {
id val = [self objectForKey:key];
if ([val isEqual:[NSNull null]]) {
return nil;
}
return val;
}
崩溃的消息 - [NSNull objectForKeyOrNil:]:无法识别的选择发送到实例0x248e678
我想我会在这里更新原来的职位有几个人建议检查ID,当我做到这一点仍然崩溃
NSDictionary *resultsArray = [data objectForKeyOrNil:@"result"];
// Loop through the downloaded data
for (NSDictionary *dictionary in resultsArray) {
id val = [dictionary objectForKey:@"id"];
if ([val isEqual:[NSNull null]] || val==nil) {
}
NSLog(@"Should be OK");
有了上面的代码,它从来没有达到的NSLog声明
任何帮助非常感谢
感谢阿龙
谢谢,我试过,但它仍然崩溃ID SERVERID = [dictionary objectForKey:@“id”]; if(serverID!= nil && [serverID class]!= [NSNull class]){ – MonkeyBlue