【问题标题】:NSFileCoordinator correct usageNSFileCoordinator 正确用法
【发布时间】:2012-08-01 08:10:42
【问题描述】:

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

  • NSFileCoordinatorWritingForDeleting
  • NSFileCoordinatorWritingForReplaceing
  • NSFileCoordinatorWritingForMoving
  • NSFileCoordinatorWritingForMerging

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

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

【问题讨论】:

    标签: cocoa icloud nsfilecoordinator


    【解决方案1】:

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

    我尝试从打开该特定文件的其他应用的角度考虑这些选项,这有助于了解整体情况。

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

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

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

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

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

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

    【讨论】:

    • 如果我错了,请原谅我,但您的回答似乎有矛盾:“不传递选项 (0) 以简单地更新文件”和“更新现有文件时应使用 NSFileCoordinatorWritingForMerging新数据”——都暗示更新文件。
    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 2012-03-08
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2021-10-16
    相关资源
    最近更新 更多