我正在使用 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;
}];
转换器正常工作,但是没有调用验证 block (我已经设置了一个断点来验证),这迫使我检查 transformationBlock inputValue 确实是 NSString 的一个实例。
为什么没有调用验证 block ,我做错了什么? 我在 RestKit GitHub 页面上找不到任何关于此的问题。
最佳答案
您将转换器直接设置到映射上并作为唯一的转换器,因此假定它始终适用。
您想将转换器设置为 RKCompoundValueTransformer
(使用 defaultValueTransformer
和您的自定义转换器),因为它会在应用转换之前执行验证。
关于ios - 未调用 RestKit 值转换器验证 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24476717/