2

我的 MyModel 继承自 MTLModel(使用 GitHub Mantle pod)。我的模型.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 数据中的字段, 截图如图所示。

同时,在字典 serialized中, 相关字段

nsfw = 0

此外,断点调试的结果在这里

这不是我的期望,我认为它应该是nsfw = false这样的

感觉有什么不对。。

那么这是否意味着 Boolean 通过序列化变成了 NSNumber 呢?

我应该怎么做才能解决问题?

任何提示或建议表示赞赏~

4

1 回答 1

1

通过查看这个相关问题,您可能知道,Mantle 已经将 JSON 中的 int 值 0 和 1 转换为 Objective-C BOOL 值。

我认为您的问题归结为一个简单的错字。

代替:

@property (nonatomic, assign, readonly) BOOL *nsfw;

这是一个指针。

做:

@property (nonatomic, assign, readonly) BOOL nsfw;

这是 Mantle 知道要翻译成的 C 类型。

于 2017-03-13T03:51:12.273 回答