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];
}
Другие вопросы по тегам