如何同时保存 NSDocument?

Posted

技术标签:

【中文标题】如何同时保存 NSDocument?【英文标题】:How can I save an NSDocument concurrently? 【发布时间】:2010-05-11 17:23:46 【问题描述】:

我有一个基于文档的应用程序。保存文档可能需要几秒钟的时间,所以我想让用户在后台保存文档时继续使用该程序。

由于文档架构,我的应用程序被要求保存到一个临时位置,然后将该临时文件复制到旧文件上。但是,这意味着我不能只在后台运行我的文件保存代码并在完成之前返回,因为临时文件必须完全写入才能复制。

有没有办法禁用这种临时文件行为或以其他方式在后台启用文件保存?

【问题讨论】:

【参考方案1】:

尝试实现the saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo: method,可能还有the saveDocumentWithDelegate:didSaveSelector:contextInfo: method。

【讨论】:

【参考方案2】:

我不认为有一个好的解决方案。如果您允许用户继续工作,如果他们在您的第一次保存操作完成之前再次保存会发生什么?

我认为最好只是放置一个保存进度表,在保存完成之前阻止文档。

【讨论】:

用户可能打开了多个文档。如果保存一个文档可能需要真的很长时间(例如,如果他们要保存到网络共享),他们可能希望切换到另一个文档并在此期间进行处理。跨度> 当然,如果您使用文档模式表来显示保存进度,那仍然是可能的。

以上是关于如何同时保存 NSDocument?的主要内容,如果未能解决你的问题,请参考以下文章

从“NSDocument 即将关闭工作表”截取保存

如何在 Objective-C 的 NSDocument 目录中保存和获取多个 pdf 文件?

NSDocument 保存音频和视频文件

NSDocument 呈现的ItemDidChange 每秒调用一次

Cocoa 自定义 NSDocument 保存

自动保存非来自用户的 NSDocument 模型更改