2013-09-27 1 views
2

iOS에서 임의의 구조로 JSON 데이터를 처리해야합니다.NSJSONSerialization으로 0/1을 false/true에서 어떻게 알 수 있습니까?

그러나 NSJSONSerialization은 true/false 값을 NSNumber으로 변환합니다.

그래서 제 질문 NSNumber 부울 값 true/false에서 변환 할 때 실제 수 0/1에 나란히 놓이는으로, 어떻게 내가 말할 수 있습니까?

참고 : 나는 [NSNumber numberWithBool]을 알고 있지만, 여기서 그것을 부르는 것이 적절한시기를 알고 싶습니다. 나는 또한 내 자신의 파서를 작성하는 것이이 문제를 해결한다는 것을 알고 있지만, 나는 그 경로를 완료하기 전에 더 쉬운 해결책이 없는지 확인하고자한다.

답변

5

을 제외한 모든 값에 대해 true를 얻을 :

if ([parsedValue isKindOfClass [NSNumber class]] && 
    strcmp([parsedValue objCType], @encode(char)) == 0) { 
    // parsedValue is converted from 'true' or 'false' in JSON. 
} 

하나 이상한 것은 NSJSONSerielization 세트 @encode(char) 대신 @encode(BOOL)에 부울 값의 objCType입니다.

+1

'BOOL' **은 **'signed char'입니다. 그러나'@encode (bool)'은 실제로 다릅니다. http://nshipster.com/type-encodings/를 참조하십시오. –

0

실제로 NSNumber가 부울인지 "알 수없는"것입니다. 하지만 상관없이 boolValue를 호출하고 부울 값인 경우 올바른 값을 얻을 수 있습니다. 이 숫자라면 당신은이 솔루션은 0입니다