【发布时间】:2014-12-30 08:08:11
【问题描述】:
我有一个使用 Core Data 的 iOS 7 应用程序。一些 Core Data 对象有一个相关的(一对一的关系)图像,它们 > 1MB & Document 文件夹中。 Core Data 对象仅将图像名称存储为字符串。
我想为应用集成 iCloud 支持,以便在设备之间同步数据。我打算使用 iCloud Core Data 存储来同步 Core Data 对象。但是这些图像怎么办?!在阅读了不同的帖子后,我发现下面突出显示了几个选项。我正在努力选择一个,这将最适合我。很高兴知道某人的经验/建议。我应该注意什么,或者我没有想到什么?我还需要考虑将现有数据迁移到我将选择的选项。
选项 1。将UIImage 存储在核心数据中作为带有外部二进制数据选项的二进制数据(读取here)。目前这似乎是最简单的解决方案,但我想不是最好的。来自Documentation:
不过,如果您能够将 BLOB 作为资源存储在 文件系统,并维护到这些文件系统的链接(例如 URL 或路径) 资源。
还会同步外部文件吗?如果是这样,如果用户退出并最小化应用程序,同步的可靠性有多高,同步过程会恢复吗?来自objc.io 关于外部文件参考:
在我们的测试中,当发生这种情况时,iCloud 并不总是知道如何 解决关系并可以抛出异常。如果您打算使用 iCloud 同步,请考虑在您的 iCloud 实体中取消选中此框
选项 2。使用UIDocument 存储图像(很好的教程here)并以某种方式跟踪核心数据条目和UIDocument 之间的关系。据我了解,我在此目录中放置的任何内容都将由系统守护程序自动同步到 iCloud。所以如果用户退出应用,图片仍然会同步到 iCloud,对吧?
选项 3。使用FileManager(更多信息here)。我没有读过很多关于这种方法的文章,但我认为它也可以工作。
选项 4。任何其他?
有类似的帖子(例如Core Data with iCloud design),但不幸的是他们没有完全回答我的问题。
【问题讨论】:
标签: objective-c core-data icloud uidocument