RestKit .20.x值转换

我是iOS开发的新手,我正在尝试在RestKit中进行一些自定义值转换,但我无法弄清楚如何做到这一点。 我有两个当前的问题:

  1. 我有一个base64编码的图像,它返回来自服务器的JSON消息。 它采用以下格式。 我使用Core Data作为后端持久存储,’image’字段作为二进制数据(NSData)存储在Core Data中。 当RestKit将base64编码的图像转换为NSData对象时,出现问题,因为存储在sqllite数据库中的图像字节不正确,我无法重新显示图像。

    "images": [{ "id": 1, "recordId": 1, "status": "C", "type": "MUGSHOT", "format": "JPEG", "width": 50, "height": 50, "image": "/9j/4AAQSkZJRgABAQEBLAEsAA....", "createBy": "blah", "createDt": 1395683191483, "captureDevice": null }] 
  2. createBy日期是自epoch以来的ms,它没有被正确转换为NSDate对象。 我知道它期望值以秒为单位,我认为这是导致问题的原因。

经过大量的谷歌搜索,我发现RKValueTransformer将允许我为不同的类设置自定义转换(在我的情况下,我想为NSDate和NSData类设置自定义转换器。但是,这里引用的RKBlockValueTransformer类( “自定义值转换”部分下的https://github.com/RestKit/RestKit/wiki/Object-Mapping )似乎不存在。我使用RestKit .20.3并使用CocoaPods使用此Podfile安装它:

  platform :ios, '7.0' pod 'RestKit', '~> 0.20.3' 

我尝试将pod“RKValueTransformers”,“〜> 1.0.0”添加到我的Podfile中,但这导致了一些编译器问题。 另外, RKValueTransformers项目是不是已经内置到RestKit中的值转换function的摘录?

我是否正确使用RKValueTransformer来获取我正在寻找的NSDate和NSData行为? 如果是这样,我需要做些什么才能将它包含在我的项目中? 有没有更简单的方法让我的应用程序正确处理存储在Core Data中的base64编码图像作为二进制字段?

编辑:这是我的Pods项目中的RKValueTransformers.h和.m文件。 它似乎只与日期格式化程序相关: RKValueTransformers

如果您将图像数据存储在Core Data中,您应该考虑勾选“允许外部存储”选项。

你想要的值转换器是将NSString转换为NSData ,你需要在中间使用base64。 您需要创建一个符合< RKValueTransforming > 。 因为要从NSString转换,所以应该实现validateTransformationFromClass:toClass:这样就可以拒绝目标不是NSData任何转换。

一旦您创建了类及其实例( imageFormatter ),请使用以下命令安装它:

 [[RKValueTransformer defaultValueTransformer] insertValueTransformer:imageFormatter atIndex:0]; 

并且相同的过程适用于日期格式化程序。