首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ZIP-archives来存储NSDocument数据

使用ZIP-archives来存储NSDocument数据
EN

Stack Overflow用户
提问于 2009-11-16 17:33:58
回答 4查看 2K关注 0票数 5

我注意到苹果开始使用压缩存档来取代iWork应用程序中的文档包(在Finder中显示为单个文件的文件夹)。我正在考虑做同样的事情,因为我一直收到与我的文档包相关的支持电子邮件,当我将它们复制到windows文件服务器时,它们被损坏了。

我的问题是,在基于NSDocument的应用程序中实现这一点的最佳方法是什么?

我想最简单的方法是创建一个目录文件包装器,为它创建一个存档,然后在NSDocument的

代码语言:javascript
复制
- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError

但是我不明白如何创建NSFileWrapper的压缩归档文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-16 21:17:59

如果你只是想让一个压缩文件成为你自己的格式(例如,"mydoc.myextension“实际上是一个压缩文件),没有一个方便的,内置的Cocoa机制可以用代码来创建压缩文件。看看这个Google Code项目:ziparchive我不认为文件包装器在这种情况下会有帮助。

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

如果苹果公司真的将整个文档压缩成一个大的zip归档文件(我觉得这很奇怪),他们要么将必要的资源提取到某个临时文件夹中,要么将整个文档加载到内存中(与他们的基于包的方法相比,IMO是一种倒退)。这些也是您需要考虑的因素。

票数 5
EN

Stack Overflow用户

发布于 2009-11-17 02:49:04

您需要从文件包装器中获取数据,并将其提供给ziparchive之类的内容。

票数 1
EN

Stack Overflow用户

发布于 2009-11-17 05:15:27

Pierre-Olivier Latour为NSData编写了一个处理压缩的扩展。你可以在这里获得它:http://code.google.com/p/polkit/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1741070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档