地幔自动将0和1转换为BOOL?

时间:2014-07-10 07:25:00

标签: ios objective-c github-mantle

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)}];
}

3 个答案:

答案 0 :(得分:6)

是的,这是为您处理的;你不需要使用映射变换器。

Mantle在内部调用setValue:forKey:来设置值。 0或1将是NSNumber,而setValue:forKey:将使用boolValue上的NSNumber来获取值,因为您的属性被声明为BOOL

键值编码的这种行为在Scalar and Structure Support下描述。

答案 1 :(得分:2)

如果需要将字符串转换为布尔值,请使用此转换器:

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

答案 2 :(得分:1)

+ (NSValueTransformer *)awesomeJSONTransformer {
    return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName];
}