В настоящее время я работаю над приложением, которое является документом, основанным как на OS X, так и на iOS, и использует Core Data. Чтобы сделать документы одинаковыми на двух платформах, я использую BSManagedDocument со стороны OS X.Как обнаружить изменения в документе Core Data в iCloud на OS X до перезагрузки документа?
Если я запускаю приложение на обеих платформах одновременно и открываю один и тот же документ в каждом, я могу вносить изменения со стороны OS X и получать два уведомления на стороне iOS (один, когда состояние документа переходит к отключению редактирования, а одно, когда он возвращается к норме). Я могу легко использовать второй в качестве триггера для обновления пользовательского интерфейса, позволяющего стороне iOS работать должным образом.
Проблема в том, что я вношу изменения на стороне iOS. Когда это произойдет, окно документа снова открывается (я подтвердил, что вызывается windowControllerDidLoadNib:
). В простом приложении это всего лишь икота (хотя она должна быть удалена), в то время как в более сложных приложениях я видел этот результат только в частичной перерисовке содержимого окна.
Я пробовал зарегистрироваться для NSPersistentStoreDidImportUbiquitousContentChangesNotification
, но это уведомление никогда не происходит на обеих платформах.
Есть ли вообще какой-либо смысл в OS X сообщать, что изменения произошли из iCloud, чтобы в пользовательский интерфейс могли вноситься необходимые обновления, а затем предотвратить повторное открытие окна?
Я подал DTS для этого. Если я получу ответ, который может быть разделен, я добавлю ответ, чтобы никто другой не мог записать DTS. – theMikeSwan