2014-05-15 46 views
1

我正在使用Rest Kit和Core Data,其中一个Core Data实体具有属性'image',它具有二进制类型。RestKit CoreData和UIImage

我仍然在样机阶段,因此图像会填充这个代码:

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>”的相同字符串表示形式,并将其直接存储到类型为长blob的MySQL列中,并且在所有点处字符串表示形式都是相同的。

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

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

回答

1

RestKit正在为核心数据中的图像存储简单的NSData - 它不知道你可能想用它来做什么。通常,您不想直接在Core Data或RestKit中管理图像。

通常,将图像的路径存储在Core Data和磁盘上的文件中。以异步方式下载它们(来自也将在Core Data中的URL)。

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

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