ios - 是否可以在基于文档的应用程序中使用 Core Data?
问题描述
我正在开发一个需要将数据保存到文件中的 iOS 应用程序。我选择了基于文档的应用程序,确切地说是基于 a 的应用程序,UIDocumentBrowserViewController
这样我就可以轻松地从系统的Files 应用程序保存和加载文件。
由于我需要在文件上保存/加载的数据非常复杂:不同对象的大层次结构、元数据、图像文件等。我想知道未来使用的最佳技术是什么。我遇到了NSFileWrapper
它可以将不同文件保存为一个的能力。我绝对可以使用它。但我也看到了在我的项目中使用Core DataUIManagedDocument
的能力,同时可能将 Core Data 数据库的内容(我知道它不是一个数据库,但你知道我的意思)保存到一个文件中,我可以在文件应用程序。
这是我可以期待的行为吗?
重新制定:我想知道我是否可以通过 a 读取/写入文件UIDocumentBrowserViewController
,其中的数据由 a 描述UIManagedDocument
,适用于 Core Data。
先感谢您。
解决方案
正如您所发现的,UIManagedDocument适合您的应用程序。它确实具有在文档包中写入和读取 附加内容(例如您拥有的元数据或图像文件)的方法。
话虽如此,我从未使用过 UIManagedDocument,也从未见过其他人使用过它。快速搜索 GitHub 发现只有这个项目有两个贡献者,他们在 2013 年围绕它编写了一个包装器。此外,Apple 似乎没有任何示例代码,并且writeAdditionalContent(_:to:originalContentsURL: ) iCloud 不支持附加内容的文档让我有点担心,但也许这是一个好兆头,表明 Core Data 团队知道在哪里划清界限。
我使用了 UIManagedDocument 的 macOS 对应物 NSPersistentDocument。它处于类似的情况,没有被大量使用,但有许多已知的技术问题。所以几年前我转而使用BSManagedDocument,据称它模仿 UIManagedDocument 以支持 Core Data 的所有现代荣耀。我对 BSManagedDocument 很满意。
总之,如果我遇到您的情况,是的,我会尝试 UIManagedDocument。但是,如果您在开发过程中需要使用一两个DTS 支持事件,请不要感到惊讶。
推荐阅读
- arrays - Swift:代码由于某种原因崩溃
- bazel - 如何将自定义标志传递给“bazel test”命令
- sql-server - SQL 计划方差科学记数法
- c# - .NET Core 2.0:仅允许使用“http”和“https”方案。参数名称:requestUri
- c# - 将 B2C 回复 URL 从“signin-oidc”更改为其他内容不起作用
- java - 显示分数后关闭活动
- tensorflow - 如何使用 tensorflow 纠正 keras 的这个自定义损失函数?
- google-chrome-extension - 在使用 Cypress 进行测试时,您可以“访问”chrome 扩展程序吗?
- c# - 如何在 WPF 中绘制一个循环形状?
- c# - C# + DockerCompose - 在尝试连接之前等待 MS SQL Server Docker 容器启动