값을 객체가 아니기 때문에 NSDictionary
에 직접 저장할 수 없습니다. 먼저 NSNumber
에서 변경하고 NSDictionary
에 저장 한 다음 [BOOL class]
을 비교하는 대신 isKindOfClass:[NSNumber Class]
을 비교해야합니다.
예 : -
BOOL value = YES;
NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:[NSNumber numberWithBool:value],@"Bool", nil];
id val = [dict valueForKey:@"Bool"];
if([val isKindOfClass:[NSNumber class]])
{
//NSNumber Class
}
편집 :
직접 NSString
에 BOOL
값을 캐스팅하지 못할. BOOL
값을 NSString
형식으로 지정하려면 고유 한 방법을 만들어야합니다. 여기에 macro
을 사용하는 작은 예가 있습니다.
BOOL
값을 NSString
으로 캐스팅하려는 클래스에서이 macro
을 정의하십시오.
#define NSStringFromBOOL(aBOOL) aBOOL? @"YES" : @"NO"
그런 다음 단순히이 전화 - 대신 '1'의
YES
을 인쇄합니다
NSString *bool_string = NSStringFromBOOL(YES);
NSLog(@"%@",bool_string);
.
이제 C 자습서를 읽으십시오. –
BOOL을 NSDictionary에 저장할 수 없습니다. docs를 참조하십시오. (JSON을 구문 분석 할 때 부울 값은 NSInteger 0과 1로 저장됩니다.) – ilmiacs
게다가 인쇄 명령문이 잘못되었습니다. – ilmiacs