我正在尝试使用Apple API获取一些应用信息,这给了我一个包含许多对象的JSON文件。
我试图确定应用的类型(仅适用于Universal / iPhone / iPad)
if(([[appDetails objectForKey:@"screenshotUrls"] count]>0) && ([[appDetails objectForKey:@"ipadScreenshotUrls"] count]>0))
{
cell.appDeviceLabel.text = @"Universal";
cell.appDeviceLabel.backgroundColor = [UIColor colorWithRed:0.012 green:0.467 blue:0.784 alpha:1];
}
else if(([[appDetails objectForKey:@"screenshotUrls"] count]==0) && ([[appDetails objectForKey:@"ipadScreenshotUrls"] count]>0))
{
cell.appDeviceLabel.text = @"iPad";
cell.appDeviceLabel.backgroundColor = [UIColor colorWithRed:0.941 green:0.58 blue:0.016 alpha:1];
}
else if(([[appDetails objectForKey:@"screenshotUrls"] count]>0) && ([[appDetails objectForKey:@"ipadScreenshotUrls"] count]==0))
{
cell.appDeviceLabel.text = @"iPhone";
cell.appDeviceLabel.backgroundColor = [UIColor colorWithRed:0.016 green:0.459 blue:0.129 alpha:1];
}
注意:screenshotUrls是一个包含iphone版本图像的数组 ipadScreenshotUrls是适用于iPad照片的。
我在我的应用程序中使用了上面的代码而Apple接受了它,但我收到崩溃报告显示这些行存在问题。
可能是因为我正在测试未找到的数组的计数?因为如果应用程序只是iphone的例子,iPad图像的数组将不存在。知道怎么解决这个问题?
感谢。
答案 0 :(得分:2)
JSON是否包含某些键的值null
?
如果是,则在Obj-C中将此值转换为NSNull
,并且传递给此对象的任何方法都会导致崩溃。 (NSNull
在这方面与nil
不同。)
由于这个原因,我经常在Obj-C中遇到与JSON的崩溃。在使用任何值之前,您应该检查一下。
if (value == (typecast)[NSNull null]) {
// use the value
}
请注意,类型转换仅用于避免编译器警告。