0

在我的应用程序中,我将拥有最多 50 张可供人们维护的图像数组。他们可以选择创建新图像或删除现有图像。每张图片都会有一些与之相关的东西,例如评分。

我的问题是我应该如何存储它们。我应该创建一个名为“Image”的 CoreData 实体并以这种方式存储它们吗?我是否应该设置一个符合 NSCoding 的 UIView 子类,只对数组进行编码和解码并将其存储在设备上?我应该考虑另一种方法吗?感谢您的任何建议。

4

3 回答 3

0

您可以创建一个实体来表示图像及其信息,并使用核心数据的外部存储属性作为实体的属性。这样,您无需将图像实际存储在持久存储中即可获得核心数据的便利。

于 2013-02-26T21:15:52.397 回答
0

最近我不得不做出类似的决定,我决定将图像存储在 CoreData 中。我有一个名为photo二进制数据字段的托管对象image

photo.image = UIImagePNGRepresentation(imageFile); // <- imageFile is a UIImage

我使用以下方法重新创建图像:

[UIImage imageWithData:self.image];

一个直接的优势是图像会随对象自动删除,如果您已经查询了记录,则在检索图像时没有额外的开销。

于 2013-02-26T21:32:02.933 回答
0

对于您想做的事情,Core Data 可能是矫枉过正。选择一些键值对来获取有关图像的描述性信息。一个键是“路径”,值是图像文件的路径(或只是它的名称)。您可以序列化字典数组(或集合)。

当您的应用程序启动时,读取序列化的字典数组。每次发生变化时,序列化并保存信息。编写一个简短的审核例程以确保字典和文件中的图像之间存在一对一的对应关系,如果其中一个或另一个丢失,则删除另一个(将处理您在更新某些内容或其他内容之前崩溃的情况)。

稍后,您可以根据需要向字典添加更多属性,甚至删除一些属性。

[PS:我在一个版本的运输应用程序中这样做了,当信息需要变得关系时,我切换到了 Core Data。]

于 2013-02-26T21:35:39.077 回答