Ios 是否自动将0和1转换为布尔值?

Ios 是否自动将0和1转换为布尔值?,ios,objective-c,github-mantle,Ios,Objective C,Github Mantle,Mantle是否已经将JSON中的int值0和1转换为objective-C布尔值 我有一个模型: @interface MyModel : MTLModel @property (nonatomic, readonly) BOOL isValid; @end 假设JSON是: { is_valid: 0 } OR { is_valid: 1 } 我想知道Mantle是否会自动将是否有效转换为Objective-C布尔值,我必须明确提及以下内容: + (NSValueTransforme

Mantle是否已经将JSON中的int值0和1转换为objective-C布尔值

我有一个模型:

@interface MyModel : MTLModel

@property (nonatomic, readonly) BOOL isValid;

@end
假设JSON是:

{ is_valid: 0 } OR { is_valid: 1 }
我想知道Mantle是否会自动将
是否有效
转换为Objective-C布尔值,我必须明确提及以下内容:

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

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

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


键值编码的这种行为在下进行了描述。

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

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

值得怀疑的是,给定的JSON具有布尔数据类型。它是否会自动将
boolean
转换为BOOL?我很可能会改变API。添加一些解释和答案,说明这个答案如何帮助OP解决当前问题
+ (NSValueTransformer *)awesomeJSONTransformer {
    return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName];
}