2012-03-05 4 views
2

Я использую iCloud для синхронизации пользовательского xml-файла между устройствами в моих приложениях с подклассом UIDocument, аналогичным коду из вопроса: http: //stackoverflow.com/questions/7795629/icloud-basics-and-code- образец. но я не уверен, когда и как мне обнаружить конфликт. Я читал документ sdk и искал в Интернете, но, похоже, не нашел никакой информации с подробной информацией. кажется, мы можем использовать какой-то код, например NSNumber * conflicted; [url getResourceValue: & конфликт для forKey: NSURLUbiquitousItemHasUnresolvedConflictsKey error: nil];, когда и как обнаружить конфликт iCloud?

но в моем приложении, кажется, всегда дает истинное значение для «конфликта»? также я не уверен, когда я должен обнаружить конфликт, я догадываюсь до того, как вызывается метод contentForType подкласса UIDocument. если кто-нибудь может дать какой-нибудь намек, который был бы велик.

ответ

1

Вы должны соблюдать UIDocumentStateChangedNotification. Если в свойстве documentState вашего документа установлен флаг UIDocumentStateInConflict, возникает конфликт. Обратите внимание, что документ может быть в нескольких состояниях одновременно, поэтому не проверяйте с помощью ==, вместо этого используйте что-то вроде if (document.state & UIDocumentStateInConflict) {....

Вы можете получить конфликтующие версии с методом класса otherVersionsOfItemAtURL:NSFileVersion.

Более подробную информацию вы можете найти в chapter on resolving document conflicts в Document-Based App Programming Guide for iOS.

Смежные вопросы