RestKit CoreData和UIImage

时间:2014-05-15 20:13:43

标签: ios objective-c core-data uiimage restkit

我正在使用带有核心数据的Rest Kit,其中一个核心数据实体具有一个具有二进制类型的属性“image”。

我仍处于模型阶段,因此图像填充了以下代码:

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://lorempixel.com/60/60/people"]]];
entry.image = UIImagePNGRepresentation(image);

另一个选项卡有一个使用fetchedResultsController的集合视图。

创建新实体后,如果我只保存上下文,则图像可以正常工作。

但是如果我使用'postObject:'将实体推送到Web服务器,则从服务器返回时图像会被破坏。我已经确认服务器接收到图像的相同字符串表示“< 2f396a2f 34414151 536b5a4a 52674142 ... 6a6e502f 32513d3d>”并将其直接存储到long blob类型的MySQL列中,并且在所有点上字符串表示都是相同的。

但是当使用通过RestKit的服务器调用填充集合视图时,实体图像无效。我认为问题是数据被转换为数据描述的数据表示。

有没有人有图片的工作示例。我唯一能想到的是我需要添加自定义转换,但文档和示例缺乏实际实现方法。

1 个答案:

答案 0 :(得分:1)

RestKit正在为Core Data中的图像存储普通NSData - 它不知道你还想用它做什么。通常,您不希望直接在Core Data中管理图像或使用RestKit。

通常,将图像的路径存储在Core Data中,将文件存储在磁盘上。异步下载(从URL也可以在Core Data中)。

对于上传,您可以让RestKit上传数据,但您可能实际上想要上传文件或转换为base64。您需要为此编写一些代码(您可以通过使用返回相应数据的方法名称的密钥来获取RestKit)。类似的过程将用于映射数据。

RestKit数据转换器很难在这种情况下工作,因为您在数据和字符串之间进行转换,并且它们太笼统而无法准确拦截。