5

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

3 回答 3

6

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

MantlesetValue:forKey:在内部调用来设置值。0 或 1 将是 a NSNumbersetValue:forKey:并将使用boolValueonNSNumber获取值,因为您的属性被声明为 a BOOL

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

于 2014-07-10T12:53:39.770 回答
2

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

+ (NSValueTransformer *)sectionJSONTransformer {
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@"0" : @(NO),
                                                                           @"1" : @(YES)}];
}
于 2016-04-21T15:26:01.347 回答
1
+ (NSValueTransformer *)awesomeJSONTransformer {
    return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName];
}
于 2016-05-16T08:33:12.530 回答