2012-09-16 7 views
5

JSON 피드에서 참석중인 참석자라는 변수가 있습니다.사전에서 부울 값을 확인합니다.

attending var type is: __NSCFBoolean 

이이 변수의 클래스 유형을 얻을 [varname에 클래스]를 사용하여 수행됩니다 : 객체가 내가이 NSLog으로 해석되는 내용 클래스 타입 확인한 후.

그래서 나는 그래서이 코드를 작성 ....이 참인지 거짓인지 확인하려면 .. :

if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){ 

가 이런 말을 나에게 노란색 텍스트 오류를 ​​제공하기 때문에 나는 그것을 컴파일하지 못할 그러나 : 내가 잘못 뭐하는 거지

enter image description here

? 이 문제를 어떻게 해결할 수 있습니까? 그냥 피드의 데이터를 추가는 다음과 같습니다

{ 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 504; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 503; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 0; 
    date = "2012-09-24 09:11:00"; 
    id = 508; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 509; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 0; 
    date = "2012-09-24 09:11:00"; 
    id = 505; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 506; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 

답변

18

부울을 사전과 다른 컨테이너 클래스에 NSNumber 객체 (대한 NSNumber 설명서를 참조에 캡슐화되어

if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){ 

이 같은 것입니다 more info)

값을 추출하려면 boolValue 메시지를 개체에 보내야합니다. 사전에서 trieved 및 YES/NO와 비교 :

NSNumber* attendingObject = [[events objectAtIndex:indexPath.row] objectForKey:@"attending"]; 
if ([attendingObject boolValue] == YES) 
{ 
    ... 
} 

읽기 더 값에 대해 그들이 캡슐화하는 방법 I 컬렉션 클래스 in the Apple documentation here

+0

당신 선생님은 전설이다! 내 질문에 답하고 내 탐구가 완료되었습니다. 당신은 100 Exp를 얻습니다. – jimbob

+0

도와 줘서 기쁘다 ;-) – AliSoftware

+0

큰 도움, 고마워. 나는 이것이 신속한 1, 2 또는 3이 된 것이 무엇인지 궁금합니다 ... – eddyce

2

는 "BOOL"유형은 목표 C 객체 대신 C 스타일 형식이 아닙니다.

사전에 "NSNumber"개체로 저장되어 있습니다.

그래서 당신이 대신해야 할 일 :

BOOL attending = NO; // assume NO to start with 
NSDictionary * lessonDictionary = [_events objectAtIndex: indexPath.row]; 
if(lessonDictionary) 
{ 
    NSNumber * attendingObject = [lessonDictionary objectForKey: @"attending"]; 
    if(attendingObject) 
    { 
      attending = [attendingObject boolValue]; 
    } 
} 
관련 문제