Как обработать BOOL в мантии?
У меня MyModel, унаследованный от MTLModel (используя модуль GitHub Mantle). 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)
}];
}
оба не работают
и используя Чарльза, получите поле в данных Response JSON, снимки экрана, как показано.
Между тем, в сериализованном словаре соответствующие поля
nsfw = 0
далее, результаты отладки точки останова здесь
Это не мое ожидание, я думаю, что это должно быть nsfw = false
что-то вроде того
Я чувствую, что-то не так..
Значит ли это, что Boolean становится NSNumber при сериализации?
Что я должен сделать, чтобы решить проблему?
любые советы или предложения приветствуются ~
1 ответ
Как вы, вероятно, знаете из этого связанного вопроса, Mantle уже преобразует значения int 0 и 1 в JSON в значения Objective C BOOL.
Я думаю, что ваша проблема сводится к простой опечатке.
Вместо:
@property (nonatomic, assign, readonly) BOOL *nsfw;
который является указателем.
Делать:
@property (nonatomic, assign, readonly) BOOL nsfw;
это тип C, который Mantle знает для перевода.