0
我试图获得一些使用Apple API的应用程序信息,它给了我一个包含许多对象的JSON文件。xcode检查一个NSArray是否存在并包含对象?
我试图确定该应用(仅通用/ 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图像阵列将不存在。任何想法如何解决这个问题?
谢谢。
是的,就像我说的例子,如果应用程序是“仅iPhone”,NSArray的Ipad图像将不存在。所以我认为这是不是?所以如果我明白我应该这样测试:if([appDetails objectForKey:@“screenshotUrls”]!=(typecast)[NSNull null]){ //该数组存在 } – hafedh 2012-03-24 12:31:00
是的,这是正确的。但是当JSON包含'null'作为一些值时会发生这种错误。如果该键不存在,'NSDictionary'将返回'nil'并且不会导致崩溃。你应该首先确认这是原因。尽管在处理JSON时,放置'NSNull'检查通常是一种很好的做法。 – Sailesh 2012-03-24 13:09:26
对于我上面列出的代码,谢谢你的任何方式,只是一件事,是否有可能导致崩溃的错误?即使NSArray不存在,我可以写array.count?谢谢。 – hafedh 2012-03-24 13:21:33