RestKit CoreData 和 UIImage

Posted

技术标签:

【中文标题】RestKit CoreData 和 UIImage【英文标题】:RestKit CoreData and UIImage 【发布时间】:2014-05-15 20:13:43 【问题描述】:

我正在使用带有 Core Data 的 Rest Kit,其中一个 Core Data 实体具有一个二进制类型的属性“图像”。

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

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

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

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

但是,如果我使用“postObject:”将实体推送到 Web 服务器,则图像在从服务器返回时已损坏。我已经确认服务器接收到图像“”的相同字符串表示,并将其直接存储到长 blob 类型的 mysql 列中,并且在所有点上,字符串表示都是相同的。

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

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

【问题讨论】:

【参考方案1】:

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

一般情况下,将图像的路径存储在 Core Data 中,并将文件存储在磁盘上。异步下载它们(从也将在 Core Data 中的 URL)。

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

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

【讨论】:

以上是关于RestKit CoreData 和 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 与直接 CoreData

无法使用 CoreData 配置 RestKit

RestKit CoreData 和 UIImage

RestKit 和 CoreData 无法关闭日志模式的问题

集成 RestKit 和 MagicalRecord 时出现 CoreData 轻量级迁移错误

在 Swift 中使用 RestKit 和 CoreData