3

我有一个内部使用NSDocument对象的 Mac“Shoebox”应用程序,但不会向用户公开单个文档的概念。(我依靠NSDocument通过 iCloud 进行同步更容易。)

我的问题是,当出现版本冲突时,我的应用会显示默认的NSDocument冲突解决警报(见下文),让用户选择一两个获胜者。

在我的应用程序的概念中,这没有意义。有没有办法拦截/防止警报并以编程方式处理冲突?

我知道我可以用下面的代码检测版本冲突。但是,我仍然需要阻止警报表。

[NSFileVersion unresolvedConflictVersionsOfItemAtURL:document.fileURL];

冲突解决警报示例:

冲突解决警报示例

4

3 回答 3

1

这是 NSDocument 发现存在未解决的版本冲突时的内置行为。如果您不想使用它,您将不得不放弃对 NSDocument 的支持并使用较低级别的抽象,例如 NSFileManager + NSFileVersion。

于 2014-01-09T17:27:06.057 回答
0

您可以覆盖+ (BOOL)usesUbiquitousStorage并返回 NO。这将不再显示普遍性冲突面板。

于 2019-07-12T19:14:33.140 回答
0

请参阅文档解决文档版本冲突

解决文档版本冲突的策略

您的应用程序可以遵循以下三种策略之一来解决文档版本冲突:

  • 合并来自冲突版本的更改。
  • 根据一些相关因素选择其中一个文档版本,例如具有最新修改日期的版本。
  • 使用户能够查看文档的冲突版本并选择要使用的版本。

最好使用哪种策略很大程度上取决于您的文档数据。如果您可以在不引入矛盾元素的情况下合并不同文档版本的内容,那么请遵循该策略。或者,如果您的应用程序没有因此遭受任何数据丢失,请选择具有最新修改日期的文档版本。

通常,您应该尝试在不涉及用户的情况下解决冲突,但对于某些可能无法实现的应用程序。如果应用程序采用以用户为中心的方法,它应该谨慎地通知用户版本冲突,并公开一个按钮或其他控件来启动解决过程。示例:让用户选择版本检查允许用户选择要使用的文档版本的应用程序代码。

于 2021-05-15T20:37:36.983 回答