NSFileCoordinator正确用法

时间:2012-08-03 09:29:02

标签: cocoa icloud nsfilecoordinator

使用NSFileCoordinator编写文件时,我需要指定正确的NSFileCoordinatorWritingOptions。虽然详细解释了,但我不确定何时使用哪一个。可用选项包括:

  • NSFileCoordinatorWritingForDeleting
  • NSFileCoordinatorWritingForReplacing
  • NSFileCoordinatorWritingForMoving
  • NSFileCoordinatorWritingForMerging

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

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

1 个答案:

答案 0 :(得分:6)

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

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

  • 不传递选项(0)只是更新文件并通知其他人您的更改。

  • 假设你正在删除TextEdit当前显示的文件,通过提供 NSFileCoordinatorWritingForDeleting 选项,你告诉TextEdit要关闭文件,因为它没有已经存在(或者它可以建议将它保存到另一个地方,如果它在内存中)。它的行为是因为删除。

  • 如果您要覆盖文件(而不是更新文件),则需要为其他应用程序提供相同的行为。那是 NSFileCoordinatorWritingForReplacing

  • NSFileCoordinatorWritingForMoving 表示其他应用可以跟踪该文件的新位置,以便以后更新。

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

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