2014-07-10 5 views
5

맨틀은 이미 JSON의 int 값 0과 1을 objective-C BOOL 값으로 변환합니까?맨틀은 0과 1을 자동으로 BOOL로 변환합니까?

나는 모델이 있습니다

@interface MyModel : MTLModel 

@property (nonatomic, readonly) BOOL isValid; 

@end 

을 그리고 말할 수 JSON은 다음과 같습니다

{ is_valid: 0 } OR { is_valid: 1 } 

내가 맨틀 자동으로 I가해야 할 목표 - C BOOL 값으로 is_valid을 변환 할 것인지 알고 싶어 명시 적으로 다음을 언급합니다.

+ (NSValueTransformer)isValidJSONTransfermer { 
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@(0) : @(NO), 
                      @(1) : @(YES)}]; 
} 
+0

의문이 부울 데이터 유형이 있습니다. – trojanfoe

+0

자동으로'boolean'을 BOOL로 변환합니까? 아마 API를 바꿀 수 있습니다. – nefarianblack

답변

5

네, 이것은 사용자를 위해 처리됩니다. 맵핑 변환기를 사용할 필요가 없습니다.

맨틀은 내부적으로 값을 설정하기 위해 setValue:forKey:을 호출합니다. 0 또는 1은 NSNumber이고 setValue:forKey:은의 NSNumber에서 값을 얻습니다. 속성은 BOOL으로 선언됩니다.

이 키 - 값 코딩 동작은 Scalar and Structure Support에 설명되어 있습니다.

2

당신이 부울 사용이 변압기 문자열을 변환해야하는 경우 : JSON 주어진

+ (NSValueTransformer *)sectionJSONTransformer { 
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@"0" : @(NO), 
                      @"1" : @(YES)}]; 
} 
1
+ (NSValueTransformer *)awesomeJSONTransformer { 
    return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName]; 
} 
+2

이 답변으로 현재 문제 해결에 OP가 도움이되는 방법에 대한 몇 가지 설명 추가 –

관련 문제