第一次在这里提问,所以如果我没有提供足够的信息,请放轻松。基本上,我的 iOS 应用程序的一部分允许用户拍摄将存储在 Core Data 存储中的照片。该属性是一个 Transformable 类型,我创建了一个 NSManagedObject 子类,我只是使用它来将其图像属性设置为用户提供的新图像。
我知道在 Core Data 中存储大文件是一个坏主意,这就是为什么当我看到 Core Data 实体中图像属性下的“存储在外部记录文件中”选项时我很兴奋。但是,我的应用程序性能却不然,在 iPhone 5 上需要几秒钟才能加载几张图片(我知道这听起来并不多,但考虑到 iPhone 5 的强大功能,旧设备可能需要更长的时间相同的数据)。
我环顾四周,有人说 Store in External Record File 选项仅适用于 OS X 环境,即使它在 iOS 应用程序中可用。但是,我也在 Apple 的“iOS 5 中的新增功能”文档下看到了这一点(它是 Core Data 下的倒数第二项,接近尾声):
托管对象支持两个重要的新特性:有序关系和属性值的外部存储。如果您指定托管对象属性的值可以存储为外部记录,Core Data 会根据每个值试探性地决定是将数据直接保存在数据库中还是将 URL 存储到它管理的单独文件中为你。
所以我的问题是,谁是对的?Apple 在为 iOS 应用程序提供此选项时是否犯了一个错误,并且它实际上什么都不做,除非你在 Mac 上,或者它实际上做了什么而我没有以正确的方式配置它,或者它是做它应该做的事情并且性能仍然很差?
我已经看到一些指南解释了如何将大文件(如图像)存储为文件,并将它们的 URL 保存在 Core Data 存储中,但由于这本质上是这个新选项正在做的事情,或者可能应该做的事情,我不确定遵循这些指南是否会有所帮助。
如果以前有人问过这个问题,我真的很抱歉。通常我自己解决这个问题就可以了,但是 Core Data 对我来说是全新的,我仍然不确定我是如何通过初始设置来实现的。感谢您提供的任何帮助!