我有一个Mac“Shoebox”应用程序,内部使用NSDocument
个对象,但不会向用户公开单个文档的概念。 (我依靠NSDocument
更容易通过iCloud进行同步。)
我的问题是,当出现版本冲突时,我的应用会显示默认的NSDocument
冲突解决提醒(见下文),让用户选择一个或两个获胜者。
在我的应用程序的概念中,这没有意义。有没有办法拦截/阻止该警报并以编程方式处理冲突?
我知道我可以使用下面的代码检测版本冲突。但是,我仍然需要阻止警报表。
[NSFileVersion unresolvedConflictVersionsOfItemAtURL:document.fileURL];
冲突解决警报示例:
答案 0 :(得分:0)
这是NSDocument在发现存在未解决的版本冲突时的内置行为。如果你不想使用它,你将不得不放弃对NSDocument的支持,并使用像NSFileManager + NSFileVersion这样的低级抽象。
答案 1 :(得分:0)
您可以覆盖+ (BOOL)usesUbiquitousStorage
并返回NO。
这将不再显示普遍存在的冲突面板。
答案 2 :(得分:0)
查看文档 Resolving Document Version Conflicts
解决文档版本冲突的策略
您的应用程序可以采用以下三种策略之一来解决文档版本冲突:
最好使用哪种策略在很大程度上取决于您的文档数据。如果您可以在不引入矛盾元素的情况下合并不同文档版本的内容,那么请遵循该策略。或者,如果您的应用程序不会因此而遭受任何数据丢失,则选择具有最新修改日期的文档版本。
通常,您应该尝试在不涉及用户的情况下解决冲突,但对于某些可能无法实现的应用程序。如果应用程序采用以用户为中心的方法,它应该谨慎地通知用户版本冲突,并公开启动解决程序的按钮或其他控件。 An Example: Letting the User Pick the Version 检查让用户选择要使用的文档版本的应用程序代码。