【发布时间】:2019-04-01 16:42:37
【问题描述】:
我收到了如下所示的 Json 作为响应消息。
data:{
type = DATA;
version = "4.51";
}
我在下面的方法中处理的,从调试器看起来那个版本号是字符串。
-(void)processResponse:(NSDictionary *)responseDictionary{
NSString *version = [responseDictionary valueForKey:@"version"];
if([version isEqualToString:@"4.51"]){ //line 3
NSLog(@"do something"); //crashes
}
}
但是第 3 行崩溃了。 我的问题是为什么这条线会崩溃?处理这种类型的字典消息的最佳方法是什么?
【问题讨论】:
-
能否分享崩溃日志?似乎版本不是 NSString,并且不响应 isEqualToString 调用。
-
是的,这不是字符串,但从 NsLog 我认为它是一个字符串。我的问题是我怎么能意识到这不是一个字符串。什么是最好的处理方法,它不会崩溃。
-
似乎 responseDictionary[@"version"] 不是字符串。这意味着您应该首先检查您的 JSON 架构。
-
可能不相关但永远不要使用
valueForKey从字典中获取单个值,除非您可以解释为什么明确需要 KVC。使用-首选-密钥订阅(responseDictionary[@"version"])或objectForKey([responseDictionary objectForKey:@"version"]) -
@VladimirObrizan,如果我没有架构的话。我应该使用什么预防代码?
标签: objective-c json nsdictionary