地幔自动将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]; }