我正在尝试使用Apple API获取一些应用程序信息,这给了我一个包含许多对象的JSON文件。
我试图确定应用程序的类型(仅通用/仅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图像阵列将不存在。知道我该如何解决吗?
谢谢。
最佳答案
JSON是否包含某些键的值null
?
如果是,则在Obj-C中将此值转换为NSNull
,任何传递给该对象的方法都将导致崩溃。 (NSNull
在这方面与nil
不同。)
由于这个原因,我通常会在Obj-C中遇到JSON崩溃的情况。在使用任何值之前,您应该先检查一下。
if (value == (typecast)[NSNull null]) {
// use the value
}
请注意,类型转换只是为了避免编译器警告而进行的。
关于iphone - xcode检查是否存在NSArray并包含对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9851435/