6

使用 NSFileCoordinator 编写文件时,我需要指定正确的 NSFileCoordinatorWritingOptions。尽管对它们进行了详细说明,但我不确定何时使用哪一个。可用的选项有:

  • NSFileCoordinatorWritingForDeleting
  • NSFileCoordinatorWritingForReplace
  • NSFileCoordinatorWritingForMoving
  • NSFileCoordinatorWritingForMerging

例如,如果我想创建一个文件(例如 plist),哪个选项是正确的?当我修改文件时,哪个?

有人可以解释 NSFileCoordinatorWritingOptions 以便更好地理解吗?

4

1 回答 1

8

我同意,这方面的文档并不完整,而且很难理解。即使是这样的基本操作,也没有示例代码可用。

我尝试从打开该特定文件的其他应用程序的角度来考虑这些选项,这有助于了解全局。

  • 不传递任何选项 (0) 以简单地更新文件并通知其他人您的更改。

  • 假设您正在删除 TextEdit 当前显示的文件,通过提供NSFileCoordinatorWritingForDeleting选项,您告诉 TextEdit 关闭该文件,因为它不再存在(或者如果它在内存中,它可能会建议将其保存到另一个地方)。它因删除而起作用。

  • 如果您正在覆盖文件(而不是更新文件),您希望其他应用程序具有相同的行为。那是NSFileCoordinatorWritingForReplacing

  • NSFileCoordinatorWritingForMoving说其他应用程序将文件跟踪到它的新位置,以便以后可以更新。

  • NSFileCoordinatorWritingForMerging要求其他进程首先提交他们的更改,以便您可以将自己的更改与这些更改合并。

要回答您的问题,您应该在创建新文件时使用 NSFileCoordinatorWritingForReplacing (即使不存在文件,因为它同时出现在另一个应用程序中,您将用自己的不相关内容替换它)。并且NSFileCoordinatorWritingForMerging应该在使用新数据更新现有文件时使用,因为它允许立即将最新更改集成到该文件(而不是稍后再解决冲突)。

于 2012-12-11T07:24:55.267 回答