gpt4 book ai didi

objective-c - 使用 ZIP 存档存储 NSDocument 数据

转载 作者:太空狗 更新时间:2023-10-30 03:50:23 24 4
gpt4 key购买 nike

我注意到 Apple 开始使用 zip 存档来替换 iWork 应用程序中的文档包(文件夹在 Finder 中显示为单个文件)。我正在考虑做同样的事情,因为我不断收到与我的文档包相关的支持电子邮件,这些电子邮件在将它们复制到 Windows 文件服务器时被损坏。

我的问题是在基于 NSDocument 的应用程序中执行此操作的最佳方法是什么?

我想最简单的方法是创建目录文件包装器,创建它的存档并将其返回到 NSDocument 的

- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError

但我不明白如何创建 NSFileWrapper 的 zip 存档。

最佳答案

如果您只想将 zip 文件制作成您的格式(即“mydoc.myextension”实际上是一个 zip 文件),则没有方便的内置 Cocoa 机制来使用代码创建 zip 存档。看看这个 Google 代码项目:ziparchive不过,我不认为文件包装器在这种情况下会有帮助。

既然你引用了 iWork,我不拥有 iWork 09,但以前的版本使用包格式(即 NSFileWrapper 是理想的)但压缩描述文档结构的 XML,同时保留附件(如嵌入式媒体、图像等)在一个资源文件夹中,都在包中。我认为他们这样做是因为 XML 对于大型、复杂的文档来说可能非常大,但压缩得很好,因为它是文本。这会导致文档整体变小。

如果 Apple 确实已经开始将整个文档制作成一个大的 zip 存档(我觉得这很奇怪),他们要么将必要的资源提取到某个临时文件夹中,要么将整个文件加载到内存中(从他们基于包的方法,IMO)。这些也是您需要考虑的注意事项。

关于objective-c - 使用 ZIP 存档存储 NSDocument 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1741070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com