【发布时间】:2014-03-24 20:23:18
【问题描述】:
我是 iOS 开发的新手,正在尝试在 RestKit 中进行一些自定义值转换,但我不知道该怎么做。我目前有两个问题:
-
我有一个 base64 编码的图像,它以 JSON 消息从服务器返回。它采用以下格式。我使用 Core Data 作为后端持久存储,并且“图像”字段作为二进制数据 (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 }] - 自纪元以来的 createBy 日期以毫秒为单位,它没有被正确地转换为 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 project 不只是 RestKit 中已经内置的价值转换功能的摘录吗?
使用 RKValueTransformer 获取我正在寻找的 NSDate 和 NSData 行为,我是否走在正确的道路上?如果是这样,我必须做什么才能将其包含在我的项目中?有没有更简单的方法可以让我的应用程序正确处理以二进制字段形式存储在 Core Data 中的 base64 编码图像?
编辑:这是我的 Pods 项目中的 RKValueTransformers.h 和 .m 文件。它似乎只是与日期格式化程序相关:
【问题讨论】:
-
您在尝试使用存储的
NSData创建图像时是否遇到任何错误? -
没有错误,但是当我将 NSData 传递给 [UIImage imageWithData:] 时,返回的 UIImage 为 nil。
标签: ios core-data ios7 restkit restkit-0.20