在核心数据中将UIImage存储为可转换属性

时间:2012-08-07 02:09:19

标签: objective-c ios cocoa-touch core-data

我目前正在开发一个应用程序,我想在其中一个核心数据实体中存储UIImage。我已经读过,在iOS 5中,UIImage现在符合名为NSCoding的协议,因此不再需要NSData的转换方法。我已将我的图像属性设置为Transformable,当我检索图像时,我的程序运行得非常好。

这是一种安全可靠的方法来存储UIImage,以便将来可以进行30秒以下的迁移吗?性能表现会好吗?我还读到了二进制数据属性类型,它允许将文件存储在文件系统中,而不是数据库中。如果这是一个更好的选择,那么如何实现呢?

2 个答案:

答案 0 :(得分:1)

迁移时间取决于整个数据库架构和大小,而不仅仅是存储UIImage。没人能回答这个问题。

表现是相对的。如果你将它存储在外部,它通常会在性能上更好,因为它不在数据库本身,但是还有很多其他的性能问题,比如管理错误,特别是如果你将它存储为直接属性而不是关系。此外,这取决于您的使用情况。没有一种解决方案适用于所有情况。

您必须对应用程序用例进行概要分析,并做出最能满足应用程序性能特征的决策。

对于任何非平凡的二进制数据,您确实应该让Core Data将其作为外部数据进行管理。这很简单。在数据模型GUI中,选中“存储在外部记录文件中”框。

答案 1 :(得分:0)

抱歉,我没有注意到你说你已经完全了解如何编码图像。我不建议将它们存储在数据库中,但祝你好运。

以前:Storing UIImage in Core Data with the new External Storage flag

关于该漏洞的关于错误的评论表明,自己将图像存储在文件系统上仍然是一个安全的想法。