2011-08-16 3 views
0

내 앱에서 사용자 피드를 사용하여 앱에서 완료 한 게시물을 검색하고 있습니다. 나는 단순히 게시물을 검색하고 모든 게시물에 대해 앱의 ID 번호를 비교합니다.Facebook 그래프 API 데이터 데이터가 일치하지 않습니다. IOS

이 작업은 정상입니다. 하지만이 방법으로 버그를 발견했습니다. 응용 프로그램 노드가 항상 일관 적이지는 않으므로. 일반적으로 응용 프로그램에서 수행하지 않은 게시물이있을 경우 사전에있는 항목은 (null)이라고 말하고 데이터가 없습니다. 이것은 어떤 문제도주지 않는다.

하지만이 응용 프로그램 노드에는 다른 데이터가있는 앱이 있습니다. 이 노드에는 구체적으로 말한 데이터가 있습니다 ((와)와 <>의 차이점을 유의하십시오). 하지만 그 게시물이 들어있는 사전이 있는지는 확인할 방법이 없습니다. 난 시도한 다음

NSDictionary *resultPost1 =[resultPost objectForKey:@"application"]; 
      NSLog(@"result%@", [resultPost objectForKey:@"application"]); 
      if ([resultPost1 count] != 0) { 

이 하나가 SIGABRT 전에 다음 nslog와 SIGABRT 준다 :

결과 (NULL)을

결과 { 식 1,957,711,133,323,244,365,557,378; name = "app"; }

결과 < 널 (null)> (가시성을위한 추가 공간)

는 또한 성공하지 또한 isEqualtoString:@"< null>"을 시도했습니다.

가끔은 그 모양이 응용 프로그램 노드의 사전이고 때로는 문자열입니다.

누구나 단서가 있습니까 ??? 감사!!!

답변

1

어떤 종류의 개체가 사전에서 반환되는지에 대해서는 보증 할 수 없으므로 약간의 확인을해야합니다.

NSDictionary *resultPost1 = [resultPost objectForKey:@"application"]; 
if ([[resultPost1 class] isKindOfClass:[NSDictionary class]) { 
    //Treat as a dictionary 
} 
else if ([[resultPost1 class] isKindOfClass:[NSString class]) { 
    //Treat as a string 
} 
else if ([resultPost1 isEqual:[NSNull null] || !resultPost) { 
    //Treat as Null, note the json library Facebook uses might set 
    //a json NULL into a NSNull object instead of nil 
} 
+0

이것은 내가 생각하는 것입니다. 내가 찾고있는 것입니다. 그러나 그것은 올바르게 작동하지 않습니다. 다음 출력을 가진 sigabrt를 제공합니다 : + [NSDictionary Class] : 클래스 0x177485c에 전송 된 인식 할 수없는 selector 2011-08-16 20 : 37 : 53.745 TabbedCalculation [4546 : 10403] 'NSInvalidArgumentException', 이유 : '+ [NSDictionary 클래스] : 클래스 0x177485c에 전송 된 인식 할 수없는 선택기' – Jos

+0

알립니다. 약간의 조정 : if ([resultPost1 isKindOfClass : [NSDictionary class]]) {} 그리고 그것은 – Jos

+0

에 대해 유감스럽게 생각합니다 : 나는 그것을 Xcode를 체크인하지 않고 썼습니다. 오타를 수정하기위한 답을 편집했습니다. –

관련 문제