2012-03-24 3 views
0

Apple API를 사용하여 응용 프로그램 정보를 얻으려고합니다. 많은 객체가 포함 된 JSON 파일을 제공합니다. xcode는 NSArray가 존재하고 객체를 포함하는지 확인합니다.

내가이

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가 아이폰 버전 ipadScreenshotUrls을위한 이미지가 포함 된 배열을위한 하나입니다 iPad 사진.

위의 코드를 내 앱에서 사용하고 Apple에서 인정하지만이 줄에 문제가 있음을 나타내는 오류 보고서가 표시됩니다.

찾을 수없는 배열 수를 테스트하고 있기 때문일 수 있습니까? 응용 프로그램이 exemple 전용 iphone 경우 iPad 이미지에 대한 배열이 존재하지 않기 때문에. 어떻게하면이 문제를 해결할 수 있을까요?

감사합니다.

답변

2

일부 키에는 JSON에 null 값이 포함되어 있습니까?

예인 경우이 값은 Obj-C에서 NSNull으로 변환되며이 개체에 전달 된 모든 메서드가 충돌합니다. (NSNull은 이와 관련하여 nil과 다릅니다.)

나는 Obj-C에서 JSON과 충돌이 자주 발생합니다. 어떤 값을 사용하기 전에 수표를 넣어 두어야합니다.

if (value == (typecast)[NSNull null]) { 
    // use the value 
} 

형식 캐스팅은 컴파일러 경고를 피하기 위해서만 수행됩니다.

+0

예 "iPhone 전용"인 경우 예를 들어 설명했듯이 Ipad 이미지의 NSArray는 존재하지 않습니다. 그래서 나는 이것이 핵심이라고 생각하지 않습니까? 그래서 이해가된다면 다음과 같이 테스트해야합니다 : if ([appDetails objectForKey : @ "screenshotUrls"]! = (타입 변환) [NSNull null]) { // 배열이 존재합니다. } – hafedh

+0

네, 맞습니다. 그러나 JSON에 어떤 값으로 'null'이 포함되어있을 때 이런 종류의 오류가 발생합니다. 키가 존재하지 않으면'NSDictionary'는'nil'을 반환 할 것이고 충돌을 일으키지 않을 것입니다. 실제로 이것이 원인인지 먼저 확인해야합니다. JSON을 다룰 때는 일반적으로 'NSNull' 체크를 사용하는 것이 좋습니다. – Sailesh

+0

위의 목록에 나와있는 코드에 대해 어떤 방식 으로든 단 한 가지가 있습니다. 충돌을 일으킬 수있는 문제가 있습니까? NSArray가 없어도 array.count를 쓸 수 있습니까? 감사. – hafedh

관련 문제