Как обработать 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 знает для перевода.

Другие вопросы по тегам