Search code examples
cocoaicloudnsdocumenticloud-apinsfileversion

Programmatically resolve NSDocument iCloud version conflicts?


I have a Mac "Shoebox" app that internally uses NSDocument objects, but does not expose the concept of individual documents to the user. (I rely on NSDocument to make syncing via iCloud easier.)

My problem is that when a version conflict arises, my app shows the default NSDocument conflict resolution alert (see below) letting the user pick one or two winners.

In the concept of my app this doesn't make sense. Is there a way to intercept/prevent that alert and handle the conflict programmatically?

I know that I can detect version conflicts with the code below. However, I still need to prevent the alert sheet.

[NSFileVersion unresolvedConflictVersionsOfItemAtURL:document.fileURL];

Example conflict resolution alert:

Example conflict resolution alert


Solution

  • This is the built in behavior of NSDocument when it discovers there are unresolved version conflicts. If you do not wish to use it you'll have to drop support for NSDocument and use a lower level abstraction like NSFileManager + NSFileVersion.