2015-03-10 4 views
2

Я делаю приложение для Apple Watch с WatchKit.Расширение WatchKit с проблемами синхронизации Coredata

У меня есть единственный объект NSManagedObject, из которого получают как приложение на телефоне, так и приложение на часах. В базе данных должен быть только один объект этого типа, поэтому обе цели должны иметь доступ к одному и тому же объекту в хранилище, хотя, очевидно, не тот же экземпляр.

Все это прекрасно работает, они могут прекрасно читать этот объект, используя группу приложений для совместного использования файла SQL. Проблема в том, что, когда приложение меняет объект, я хочу, чтобы часы сразу его забирали, чтобы он мог обновить свой интерфейс.

Я использую MMWormhole для отправки уведомления о часах, когда объект сохраняется, когда это произойдет, я затем делаю новую выборку в контексте в расширении. Однако, когда я делаю эту выборку, ни одна из данных об объекте не изменилась в расширении, чтобы отразить состояние объекта в приложении. Это все так же, как и до того, как в приложении было вызвано сохранение.

Итак, во-первых, есть ли способ уведомления в расширении CoreData в приложении без использования MMWormhole? Но что еще более важно, что я делаю неправильно, чтобы закончить старые данные в моем последующем запросе выборки в расширении? Я бы подумал, что выбор из контекста будет запрашивать хранилище, и поскольку оба приложения указывают на один и тот же файл db, он будет собирать новые данные. Есть ли задержка после сохранения, запросы на выборки кэшированы каким-то образом или я просто что-то недопонимаю?

ответ

0

Чтобы обновить объект, вам необходимо использовать объект NSManagedContext refreshObject. Поскольку расширение и приложение iOS выполняются в разных пространствах памяти, вам нужно будет использовать что-то вроде MMWormhole для уведомлений. См. Это для получения дополнительной информации Core Data with WatchKit and iOS App

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