RestKit值转换器validation块未被调用

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

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; }]; 

转换工作正常,但是validation块没有被调用(我已经设置了一个断点来validation),这迫使我在transformationBlock中检查inputValue确实是NSString的一个实例。

为什么validation块没有被调用,我做错了什么? 我在RestKit GitHub页面找不到任何问题。

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

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