ios - 未调用 RestKit 值转换器验证 block

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

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

为什么没有调用验证 block ,我做错了什么? 我在 RestKit GitHub 页面上找不到任何关于此的问题。

最佳答案

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

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

关于ios - 未调用 RestKit 值转换器验证 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24476717/

相关文章:

ios - NSDocumentDirectory 删除文件夹

ios - 子类化 NSInputStream,重写委托(delegate)?

iOS - 多个 http 请求 - 在获取所有内容后做一些事情

objective-c - RestKit:连接不在响应中的关系

ios - Post JSON Body + MultiPart RestKit 0.2x 失败

ios - 使用 Restkit 通过外键连接一对多

ios - ffmpeg 转换后的 x264 视频显示色彩饱和度急剧下降

ios - 你如何在 Swift 中将 NSValue pointerValue() 转换为 UIView?

ios - 使用 iOS 10 SDK 构建的应用程序在 iOS 8 上运行时崩溃

ios - RestKit 映射字符串数组和同一对象的 keyPath 值