如何在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 类型。