未调用RestKit值变换器验证块

时间:2014-06-29 13:57:42

标签: ios restkit

我正在使用RestKit(最新版本0.23.1),我已经在字符串值到数字字段之间定义了一个自定义变换器,如下所示:

mapping.valueTransformer = [RKBlockValueTransformer valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class inputValueClass, __unsafe_unretained Class outputValueClass) {
    return [inputValueClass isSubclassOfClass:[NSString class]];
} transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputClass, NSError *__autoreleasing *error) {
    if (![inputValue isKindOfClass:[NSString class]]) {
        return NO;
    }

    // conversion logic follows...
    return YES;
}];

变换器正常工作,但是没有调用验证块(我设置了断点来验证),这迫使我在transformBlock中检查inputValue确实是NSString的一个实例。

为什么不调用验证块,我做错了什么? 我在RestKit GitHub页面上找不到任何问题。

1 个答案:

答案 0 :(得分:1)

您正在将变压器直接设置到映射上并作为唯一的变压器,因此假定它始终适用。

您希望将转换器设置为RKCompoundValueTransformer(使用defaultValueTransformer和您的自定义转换器),因为它在应用转换之前会执行验证。