地幔问题 - MTLValueTransformer不会将NSNumber转换为int

时间:2015-02-12 22:05:05

标签: ios objective-c objective-c-blocks github-mantle

我使用Mantle成功转换模型中的值 - 但是这个错误回复了:Incompatible block pointer types sending 'int (^)(NSNumber *__strong)' to parameter of type 'MTLValueTransformerBlock' (aka 'id (^)(__strong id)')

+ (NSValueTransformer *)numDownvotesJSONTransformer
{
    return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(NSNumber *number) {
        return [number intValue];
    } reverseBlock:^(int value) {
        return [NSNumber numberWithInt:value];
    }];
}

这种类似的转换效果很好:

+ (NSValueTransformer *)longitudeJSONTransformer
{
    return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(NSNumber *number) {
        return [NSDecimalNumber decimalNumberWithDecimal:[number decimalValue]];
    } reverseBlock:^(NSDecimalNumber *decimalNumber) {
        return [NSNumber numberWithDouble:[decimalNumber doubleValue]];
    }];
}

不理解这里的区别。

1 个答案:

答案 0 :(得分:4)

来自项目维护者的回答:"变形金刚必须对物体进行操作。您不需要为NSNumber转到原始属性做任何事情,因为键值编码会自动处理。"