Mantle конвертировать 0 и 1 в BOOL автоматически?
Mantle уже конвертирует значения int 0 и 1 в JSON в значения BOOL target-C?
У меня есть модель:
@interface MyModel : MTLModel
@property (nonatomic, readonly) BOOL isValid;
@end
И скажем, JSON это:
{ is_valid: 0 } OR { is_valid: 1 }
Я хочу знать, будет ли Mantle автоматически конвертировать is_valid
в значение Objective-C BOOL, чтобы сделать, я должен подробно сказать следующее:
+ (NSValueTransformer)isValidJSONTransfermer {
return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@(0) : @(NO),
@(1) : @(YES)}];
}
3 ответа
Да, это обрабатывается для вас; Вам не нужно использовать картографический трансформатор.
Мантия внутренне звонит setValue:forKey:
установить значение. 0 или 1 будет NSNumber
, а также setValue:forKey:
будет использовать boolValue
на NSNumber
чтобы получить значение, так как ваша собственность объявлена как BOOL
,
Такое поведение кодирования значения ключа описано в разделе Поддержка скаляров и структур.
Если вам нужно преобразовать строку в логическое значение, используйте этот преобразователь:
+ (NSValueTransformer *)sectionJSONTransformer {
return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@"0" : @(NO),
@"1" : @(YES)}];
}
+ (NSValueTransformer *)awesomeJSONTransformer {
return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName];
}