如何在Mantle中处理BOOL?
how to process BOOL in Mantle?
我有 MyModel 继承自 MTLModel(使用 GitHub Mantle pod)。 MyModel.h
@interface MyModel : MTLModel <MTLJSONSerializing>
@property (nonatomic, assign, readonly) BOOL *nsfw;
@end
在MyModel.m,我试过了
+ (NSValueTransformer *)nsfwJSONTransformer {
return [NSValueTransformer valueTransformerForName:MTLBooleanValueTransformerName];
}
和
+ (NSValueTransformer *)nsfwJSONTransformer {
return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{
@"0": @(NO),
@"1": @(YES)
}];
}
两者都不工作
并使用 Charles 获取响应 JSON 数据中的字段,
screenshots如图所示。
同时,在词典 序列化中,
相关字段是
nsfw = 0
进一步断点调试结果在here
这不是我的期望,我认为应该是 nsfw = false
类似的东西
感觉有点不对..
那么这是不是意味着Boolean通过序列化变成了NSNumber?
我应该怎么做才能解决问题?
任何提示或建议都非常感谢~
正如您可能通过 looking at this related question 了解到的那样,Mantle 已经将 JSON 中的 int 值 0 和 1 转换为 Objective-C BOOL 值。
我认为您的问题归结为一个简单的错字。
而不是:
@property (nonatomic, assign, readonly) BOOL *nsfw;
这是一个指针。
做:
@property (nonatomic, assign, readonly) BOOL nsfw;
这是 Mantle 知道要转换成的 C 类型。
我有 MyModel 继承自 MTLModel(使用 GitHub Mantle pod)。 MyModel.h
@interface MyModel : MTLModel <MTLJSONSerializing>
@property (nonatomic, assign, readonly) BOOL *nsfw;
@end
在MyModel.m,我试过了
+ (NSValueTransformer *)nsfwJSONTransformer {
return [NSValueTransformer valueTransformerForName:MTLBooleanValueTransformerName];
}
和
+ (NSValueTransformer *)nsfwJSONTransformer {
return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{
@"0": @(NO),
@"1": @(YES)
}];
}
两者都不工作
并使用 Charles 获取响应 JSON 数据中的字段, screenshots如图所示。
同时,在词典 序列化中, 相关字段是
nsfw = 0
进一步断点调试结果在here
这不是我的期望,我认为应该是 nsfw = false
类似的东西
感觉有点不对..
那么这是不是意味着Boolean通过序列化变成了NSNumber?
我应该怎么做才能解决问题?
任何提示或建议都非常感谢~
正如您可能通过 looking at this related question 了解到的那样,Mantle 已经将 JSON 中的 int 值 0 和 1 转换为 Objective-C BOOL 值。
我认为您的问题归结为一个简单的错字。
而不是:
@property (nonatomic, assign, readonly) BOOL *nsfw;
这是一个指针。
做:
@property (nonatomic, assign, readonly) BOOL nsfw;
这是 Mantle 知道要转换成的 C 类型。