使用NSFileCoordinator编写文件时,我需要指定正确的NSFileCoordinatorWritingOptions。虽然详细解释了,但我不确定何时使用哪一个。可用选项包括:
例如,如果我想创建一个文件(例如plist),那么哪个选项是正确的? 我修改文件时哪一个?
有人可以解释一下NSFileCoordinatorWritingOptions以便更好地理解吗?
答案 0 :(得分:6)
我同意,文档在这方面并不完整,而且难以理解。即使是像这样的基本操作,也没有可用的示例代码。
我尝试从其他具有特定文件打开的应用程序的角度考虑这些选项,这有助于全面了解。
不传递选项(0)只是更新文件并通知其他人您的更改。
假设你正在删除TextEdit当前显示的文件,通过提供 NSFileCoordinatorWritingForDeleting 选项,你告诉TextEdit要关闭文件,因为它没有已经存在(或者它可以建议将它保存到另一个地方,如果它在内存中)。它的行为是因为删除。
如果您要覆盖文件(而不是更新文件),则需要为其他应用程序提供相同的行为。那是 NSFileCoordinatorWritingForReplacing 。
NSFileCoordinatorWritingForMoving 表示其他应用可以跟踪该文件的新位置,以便以后更新。
NSFileCoordinatorWritingForMerging 要求其他进程首先提交更改,以便您可以将自己的更改与这些更改合并。
要回答你的问题,你应该在创建新文件时使用NSFileCoordinatorWritingForReplacing(即使没有文件存在,因为它是从另一个应用程序同时出现的,你要用自己的文件替换它,不相关内容)。在使用新数据更新现有文件时,应使用 NSFileCoordinatorWritingForMerging ,因为它允许立即将最新更改集成到该文件中(而不是稍后解决冲突)。