是否可以在基于文档的应用程序中使用核心数据?

Is it possible to use Core Data in a document-based application?

我正在开发一个需要将数据保存到文件中的 iOS 应用程序。我选择了一个基于文档的应用程序,准确地说是一个基于 UIDocumentBrowserViewController 的应用程序,这样我就可以轻松地从系统的 Files 应用程序.[=15= 保存和加载文件]

因为我需要 save/load 文件上的数据非常复杂:不同对象的大层次结构、元数据、图像文件等。我想知道最好使用的技术是什么往前走。 我遇到了 NSFileWrapper 及其将不同文件保存为一个文件的能力。我绝对可以使用它。但我也看到了 UIManagedDocument 和在我的项目中使用 Core Data 的能力,同时可能保存了 Core Data 数据库的内容(我知道它不完全是一个数据库,但你明白我的意思)到我可以写在 File App.

某处的文件中

这是我可以预料到的行为吗?

重新表述:我想知道我是否可以通过 UIDocumentBrowserViewController 来 read/write 文件,其中 UIManagedDocument 描述的数据与 Core Data 一起使用。

提前谢谢你。

如您所见,UIManagedDocument is there for your kind of application. And it does feature methods to write and read其他内容,例如文档包中的元数据或图像文件。

话虽如此,我从未使用过UIManagedDocument,也从未见过其他人使用过它。快速搜索 GitHub 仅找到此 one project with two contributors who wrote a wrapper around it in 2013. Also, there does not seem to be any sample code from Apple, and the remark in the the writeAdditionalContent(_:to:originalContentsURL:) 文档 iCloud 不支持其他内容让我有点担心,但这也许是一个好兆头核心数据团队知道在哪里画线。

我使用了 UIManagedDocument 的 macOS 对应项 NSPersistentDocument。它处于类似的情况,没有被广泛使用,但有更多已知的技术问题。所以几年前我切换到 BSManagedDocument,据称它 模仿 UIManagedDocument 来支持 Core Data 的所有现代荣耀 。我对 BSManagedDocument 很满意。

总而言之,如果我遇到您的情况,是的,我会尝试使用 UIManagedDocument。但是,如果您在开发过程中需要使用一两个 DTS support incident,请不要感到惊讶。