objective-c - 将 UIImage 存储为核心数据中的可转换属性

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

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

这是一种安全可靠的方法来存储 UIImage 以允许 future 低于 30 秒的迁移吗?性能方面会好吗?我还阅读了二进制数据属性类型,它允许将文件存储在文件系统中,而不是数据库中。如果这是更好的选择,人们将如何实现?

最佳答案

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

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

您必须分析您的应用程序用例,并做出最符合您应用程序性能特征的决策。

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

关于objective-c - 将 UIImage 存储为核心数据中的可转换属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838376/

相关文章:

cocoa-touch - 在layout/layoutSubviews方法中布局 subview 是否更好?

iphone - 为什么 Cocoa-Touch 类 ivars 具有前导下划线字符?

iphone - 发生 ARC 时发出警告?

iOS:模态 viewController 如何记住它的属性?

ios - 自定义UISlider拇指图标: How to stop thumb icon from reverting back to default circle icon when drag?

ios - 如何根据 iOS 中的文本长度更改 UILabel 宽度?

ios - iOS13后Segmented Controller背景变灰

iphone - 在屏幕上随机移动两个或多个对象

ios - 按下一个按钮,并使相同的按钮出现在同一页面上

iphone - 使用 NSFetchedResultsController 处理背景变化