从JSON数据分配为NSString时崩溃



我正在遇到一场崩溃,我已经缩小了这一代码,但我不明白我如何避免它。

NSString *variantImageUrl = variantEdge[@"node"][@"image"][@"src"];

如果src的值为null,则应用程序崩溃了以下错误消息

    2017-11-21 17:23:27.023988+0800 NWMPos[3218:2124447] -[NSNull objectForKeyedSubscript:]: unrecognized selector sent to instance 0x1b2a01650
2017-11-21 17:23:27.026199+0800 NWMPos[3218:2124447] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull objectForKeyedSubscript:]: unrecognized selector sent to instance 0x1b2a01650'

只要SRC的值是正确的字符串,它的工作正常

但是我无法在分配NULL之前检查该值,以免避免崩溃?

添加null检查:

if(![variantEdge[@"node"][@"image"][@"src"] isEqual:[NSNull null]])
{
    NSString *variantImageUrl = variantEdge[@"node"][@"image"][@"src"];
}

笨拙的地狱,但是

NSDictionary *dict = variantEdge;
for (NSString *key in @[@"node", @"image"]) {
   dict = dict[key];
   if (![dict isKindOfClass:NSDictionary.class]) {
      dict = nil;
      break;
   }
}
NSString *url = dict ? dict["src"] : nil;

最新更新