我注意到,苹果开始使用zip替换文件包(文件夹的出现作为一个单一的文件,搜索)中的历保存,获得应用。我在考虑做一样的,因为我不断收到支持电子邮件关于我的文档的软件包得到破坏,当复制到windows文件服务器.

我的问题是什么是最好的方式来做到这一NSDocument基础的应用程序?

我猜最简单的办法是创建一个目录的文件包装、创建一个归档和重返它在NSDocument的

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

但我不理解如何创建一个zip的NSFileWrapper.

有帮助吗?

解决方案

如果你只想做一个zip文件您的格式(即“mydoc.myextension”实际上是一个zip文件),有没有方便,内置的可可机制与代码创建ZIP档案。看看这个谷歌代码项目: ziparchive 我不相信文件包将帮助在这种情况下,虽然。

既然你引用的iWork,我没有自己的iWork 09,但以前的版本中使用的封装格式(即NSFileWrapper将是理想的),但压缩描述文档结构的XML,同时保持附件(如嵌入式媒体,图像等),在一个资源文件夹,所有的包内。我认为他们这样做是因为XML对于大型,复杂的文件相当大,但压缩得非常好,因为它是文本。这导致总体较小文档中

如果苹果确实已经转移到使整个文件的一个大zip压缩包(我会觉得奇怪),他们就会要么某处提取必要的资源到一个临时文件夹或向后加载整个事情到内存(步他们的基于包的方法,IMO)。这些都是你需要考虑和注意事项。

其他提示

您会想从文件包获取数据,并将其反馈到类似 ziparchive

皮埃尔奥利弗拉图尔写的扩展NSData的与zip压缩交易。你可以在这里得到它: http://code.google.com/p/polkit/

我知道这是一个有点晚的派对但我以为我提供了另一个链接,可以帮助的任何人都遇到这个职位。

看起来像ZipBrowser样从苹果将是一个良好的开端 http://developer.apple.com/library/mac/#samplecode/ZipBrowser/Introduction/Intro.html

禾田

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top