Mar*_*fer 5 zip cocoa objective-c nsdocument nsfilewrapper
我注意到Apple开始使用zip存档来替换iWork应用程序中的文档包(在Finder中显示为单个文件的文件夹).我正在考虑做同样的事情,因为我一直得到与我的文档包相关的支持电子邮件在将它们复制到Windows文件服务器时被破坏.
我的问题是在基于NSDocument的应用程序中执行此操作的最佳方法是什么?
我想最简单的方法是创建一个目录文件包装器,创建它的存档并在NSDocument中返回它
- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError
Run Code Online (Sandbox Code Playgroud)
但我不明白如何创建NSFileWrapper的zip存档.
如果你只想制作一个zip文件你的格式(即"mydoc.myextension"实际上是一个zip文件),那么就没有方便的内置Cocoa机制来创建带代码的zip存档.看看这个Google Code项目:ziparchive我不相信文件包装器在这种情况下会有所帮助.
既然你引用了iWork,我就不拥有iWork 09,但以前的版本使用的是封装格式(即NSFileWrapper非常理想),但是压缩描述文档结构的XML,同时保留附件(如嵌入式媒体,图像等). )在资源文件夹中,所有内容都在包中.我假设他们这样做是因为XML对于大而复杂的文档来说可能非常大,但是因为它是文本而压缩得非常好.这导致整体较小的文档.
如果Apple确实将整个文档变成了一个大的zip存档(我觉得很奇怪),那么他们要么将必要的资源提取到某个临时文件夹中,要么将整个文件加载到内存中(从包中向后退一步)基于方法,IMO).这些也是您需要考虑的因素.
归档时间: |
|
查看次数: |
1918 次 |
最近记录: |