2014-07-10 11 views
5

Czy Mantle już konwertuje wartości int 0 i 1 w JSON na wartości BOOL obiektu C?Mantle konwertuje automatycznie 0 i 1 na BOOL?

Mam model:

@interface MyModel : MTLModel 

@property (nonatomic, readonly) BOOL isValid; 

@end 

I powiedzmy, że JSON jest:

{ is_valid: 0 } OR { is_valid: 1 } 

Chcę wiedzieć, czy Mantle automatycznie konwertować is_valid w Objective-C wartości BOOL do mam explicity wymień następujące:

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

Wątpliwe, zważywszy JSON ma logiczną typ danych. – trojanfoe

+0

Czy automatycznie konwertuje 'boolean' na BOOL? Najprawdopodobniej zmienię API. – nefarianblack

Odpowiedz

5

Tak, jest to obsługiwane dla Ciebie; nie musisz używać transformatora odwzorowującego.

Oprawa wewnętrznie wywołuje setValue:forKey:, aby ustawić wartość. 0 lub 1 będzie NSNumber, a setValue:forKey: użyje boolValue na NSNumber, aby uzyskać wartość, ponieważ twoja własność jest zadeklarowana jako BOOL.

To zachowanie kodowania wartości kluczowej opisane jest pod numerem Scalar and Structure Support.

2

Jeśli trzeba przekonwertować ciąg do logicznego zastosowania tej Transformers:

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

Dodaj wyjaśnienie w odpowiedzi na pytanie, w jaki sposób ta odpowiedź pomoże OP w ustalaniu bieżącego problemu –

Powiązane problemy