NSFileCoordinator正确用法

Joh*_*nes 5 cocoa icloud nsfilecoordinator

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

  • NSFileCoordinatorWritingForDeleting
  • NSFileCoordinatorWritingForReplacing
  • NSFileCoordinatorWritingForMoving
  • NSFileCoordinatorWritingForMerging

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

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

rse*_*bbe 6

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

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

  • 不通过任何选项(0)来简单地更新文件并通知其他人您的更改.

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

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

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

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

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

  • 如果我错了,请原谅我,但您的回答似乎自相矛盾:“不通过选项 (0) 来简单地更新文件”和“在使用新数据更新现有文件时应使用 NSFileCoordinatorWritingForMerging”——两者都暗示更新文件。 (2认同)