UIDocument 是具有元数据的大型文档的合适策略吗?
Posted
技术标签:
【中文标题】UIDocument 是具有元数据的大型文档的合适策略吗?【英文标题】:Is UIDocument a suitable strategy for large documents with metadata? 【发布时间】:2014-06-05 19:00:38 【问题描述】:我正在考虑使用 UIDocument
和 NSFileWrapper
来存储包含大量大型视频文件和一些小型文本文件的“项目”。我遇到了一些问题,我开始怀疑 UIDocument 是否仍然是正确的策略。
性能
据我所知,NSFileWrapper 将所有内容加载到内存中。在处理大型视频文件时,这可能是一个问题。我认为可以通过使用放弃标准NSFileWrapper
的自定义保存和加载方法来解决此问题。
元数据
我想显示所有文档的列表以及一些元数据。例如,这可以包括预览图像、录制的场景数量、视频长度等。现在获取此数据的唯一方法是打开每个文档并检索它。可能很慢,尤其是对于大型文档。
解决方案?
我现在看到了两种解决方案:完全放弃 UIDocument 并采用自定义架构,或者使用某种集中式元数据文件。后者的缺点是我必须在两个不同的地方管理元数据,并且我需要手动保持它们同步。
UIDocument 仍然是解决问题的方法吗?如果是:有什么方法可以解决这些问题?
【问题讨论】:
你有什么结论吗?会很好听,因为我也看到 UIDocument 的表现不佳...... 这两个问题(***.com/questions/23265422、***.com/questions/13621502)以及我自己的研究导致我放弃 UIDocument 以支持 Core Data 解决方案。我现在使用 Core Data 保存我的所有数据并手动管理文件系统上的大文件。它对我来说效果很好,我很高兴我做出了改变。我唯一不得不放弃的就是简单的 iCloud 同步。但是对于像这些一样大的文件,这无论如何都是不可行的。看来您可以创建自己的文件包装类来解决大文件的一些性能问题。 @Rengers 你知道2020年情况是否有所改善吗? @zrfrank:很抱歉,我已经很多年没有使用过 UIDocument(或为此编写过 MacOS 应用程序),所以我不知道目前的情况。 【参考方案1】:根据 cmets,提问者找到了前进的方法:
放弃 UIDocument 以支持 Core Data 解决方案。我现在把我所有的 数据使用 Core Data 并手动管理上的大文件 文件系统。它对我来说效果很好,我很高兴我做了 转变。我唯一不得不放弃的就是简单的 iCloud 同步。但 对于像这些一样大的文件,无论如何这都是不可行的。它 似乎您可以创建自己的文件包装类来解决一些问题 大文件的性能问题。
【讨论】:
以上是关于UIDocument 是具有元数据的大型文档的合适策略吗?的主要内容,如果未能解决你的问题,请参考以下文章