将 NSData 数组保存到 CoreData

Posted

技术标签:

【中文标题】将 NSData 数组保存到 CoreData【英文标题】:Saving NSData Array to CoreData 【发布时间】:2018-01-18 07:23:03 【问题描述】:

我正在从图库中挑选一张图片并将其转换为 NSData。稍后我将其存储在 CoreData 中并稍后检索。但是,如果我从图库中选择 2 张图像,我想将它们的 `NSData 信息存储到一个数组中,并将该数组存储到 CoreData。但是如何将数组保存到我无法弄清楚的 CoreData 中。确实浏览过其他处理类似问题的 SO 帖子,但它们并没有太大帮助。

另外请注意..在这种情况下,我无法将数组存储到 UserdefaultsDocument directory,因为还有其他与图像相关的数据,如名称、数量等,它们都存储在 coredata 中,以后应该在表格视图中显示。如果仅使用其他方法存储图像而使用核心数据存储其他详细信息,则表格视图中将不会填充适当的数据..

【问题讨论】:

这个链接可以帮助你...***.com/questions/4266205/… 【参考方案1】:

将实体用作ImagesArray,将relationship 用于Image 的许多实体。反过来,图片将具有属性,例如imageData (Binary Data)Name (String) 等和relationship 到一个ImagesArray

见example

使用identifier 或其他属性创建ImagesArray 实体以进行识别。

然后使用属性imageData(二进制数据)、name(字符串)等创建Image实体。

实体ImagesArray 将拥有relationship images 到许多实体Image

实体 Image 将与 relationship imagesArray 反向到一个实体 ImagesArray

在代码中,您将使用 imageDataname 等创建实体 Imageset

然后创建ImagesArray

set 的实体Image 添加到ImagesArray 的属性(关系)images

实体ImagesArray 将拥有set 的实体Image

【讨论】:

你能详细解释一下吗,@Alexey Kudlay @bvt,好的。稍晚一点 感谢您的回答,@Alexey Kudlay..我对您所说的有所了解,但不是全部。在这种情况下,哪个数组将保存我的图像..? ImageImages.. 类型的数组?另外,图像将如何存储..? NSData 格式或图像本身..? @bvt,我确实刷新了答案。另外,图像将如何存储..? - NSData @bvt,我的决定有帮助吗?【参考方案2】:

在我看来,将图像保存到 CoreData 不是保存图像的正确方法。您应该将它们保存在应用沙箱中,然后将路径存储在 CoreData 中。 说你可以使用 NSValueTransformer 保存一个数组,你可以找到一个例子here。但可能最好的方法是在用户实体和图像实体之间创建一对多关系。

【讨论】:

我确实已经看到该链接@Andrea,但无法从中获得太多帮助..

以上是关于将 NSData 数组保存到 CoreData的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 0.20 使用 nsdata 发布数组 Json

将十六进制值存储到 NSData

如何在 Swift 中从 NSData 显示 PDF - 如何将 PDF 保存到文档文件夹 Swift - 如何在 Swift 中通过 WebView 从保存的 NSData 显示 PDF

NSData到UIImage

将 GIF 图像转换为 nsdata

CoreData 中的 NSData 未正确保存