地幔自动将0和1转换为BOOL?
Mantle是否已经将JSON中的int值0和1转换为objective-C BOOL值?
我有一个模型:
@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)}]; }
是的,这是为你处理的。 你不需要使用映射变换器。
地幔内部调用setValue:forKey:
设置值。 0或1将是一个NSNumber
,并且setValue:forKey:
将使用NSNumber
上的boolValue
来获取值,因为您的属性被声明为BOOL
。
在标量和结构支持下描述了键值编码的这种行为。
如果您需要将string转换为布尔值,请使用此转换器:
+ (NSValueTransformer *)sectionJSONTransformer { return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@"0" : @(NO), @"1" : @(YES)}]; }
+ (NSValueTransformer *)awesomeJSONTransformer { return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName]; }