2014-07-10 13 views
5

Mantle converte già i valori int 0 e 1 in JSON ai valori obiettivo-C BOOL?Mantle convertire 0 e 1 in BOOL automaticamente?

Ho un modello:

@interface MyModel : MTLModel 

@property (nonatomic, readonly) BOOL isValid; 

@end 

e permette di dire JSON è:

{ is_valid: 0 } OR { is_valid: 1 } 

Voglio sapere se Mantello sarebbe convertire automaticamente is_valid in Objective-C valore booleano per devo menziona esplicitamente quanto segue:

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

In dubbio, dato JSON ha un tipo di dati booleano. – trojanfoe

+0

Converte automaticamente 'boolean' in BOOL? Molto probabilmente posso cambiare API. – nefarianblack

risposta

5

Sì, questo è gestito per voi; non è necessario utilizzare il trasformatore di mappatura.

Mantle chiama internamente setValue:forKey: per impostare il valore. Lo 0 o 1 sarà un NSNumber e setValue:forKey: utilizzerà lo boolValue su NSNumber per ottenere un valore, poiché la proprietà è dichiarata come BOOL.

Questo comportamento della codifica dei valori-chiave è descritto al numero Scalar and Structure Support.

2

Se avete bisogno di convertire una stringa in uso booleano questo trasformatore:

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

Aggiungi una spiegazione con la risposta per come questa risposta aiuta l'OP a risolvere il problema attuale –