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