2011-12-09 4 views
0

JSON에서 파싱되는 null 값 문제가 있습니다. 엔티티를 UILabel과 연결할 때 널 타입이라면 응용 프로그램이 충돌합니다. 모든 연결 집합에서 null을 확인하는 것보다보기에 null 값을 표시하는 좋은 방법이 있습니까?JSON의 Null 값

감사

답변

2
if (objectHoldingJsonValue == [NSNull null]) { 
    // you have a null value, move in other value 
} 
+1

주, 그래서 나는'-isKindOfClass를 사용하여 실제로 추천 할 것입니다 : NSDictionary와 함께 작동, 변경할 필요는 없습니다 '. –

3

클래스 NSNull이 같은 상황을위한 것입니다. 당신이를 통과하지 않도록하려면

id myValue = // get value from collection 

// method one (recommended, as you could have more than one instance of NSNull) 
if ([myValue isKindOfClass:[NSNull class]) 
{ 
    // null value 
} 

// method two, not recommended 
if (myValue == [NSNull null]) 
{ 
    // null value 
} 
+0

해답은 없지만 사전이나 배열에 null로 된 엔티티가 있다면 어떻게 될까요? null보다 약간의 가치를 내기 위해 모든 것을 반복해야합니까? – kforkarim

0

:

그것의

사용법은 다음과 유사 이다 값 null (이 0x0)이 허용되지 않습니다 컬렉션 (NSArray, NSDictionary 등)에 사용된다 json으로 개체의 컬렉션을, 당신이 할 수 하위 클래스 UILabel의 및 NULL 인 반대 값을 검증하는 "텍스트"속성에 대한 세터를 (예를 들어, 리처드의 접근 방식 사용) - 탈 이상 : 물론

- (void) setText:(NSString *)textValue 
{ 
    if ([textValue isKindOfClass:[NSNull class]]) textValue = nil; 
    [super setText:textValue];   
} 

을 , 타크 이 접근 방식을 사용하면이 NULL 값으로 인해 문제가 발생할 수있는 응용 프로그램의 다른 상황을 열어 둘 수 있습니다. 따라서 데이터 모델의 컨텍스트에서 유효성 검사/제거가 선호 될 수 있습니다.

0

JSON 사전에서 루팅을위한 가장 간단한 방법입니다. 응용 프로그램에서 NSNull``의 인스턴스를 두 개 이상 가질 수

[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 
    if ([obj isKindOfClass:[NSNull class]]) [dictionary setValue:[NSString stringWithString:@""] forKey:key]; 
} ];