Использование Core Data с watchOS 2.0

Я создал приложение для iOS / Apple Watch с WatchKit 1.0, которое использует контейнер общей группы и настраиваемую платформу для доступа к одному и тому же хранилищу Core Data. В руководстве по переходу на watchOS 2.0 Apple говорит следующее:

Если ваше существующее приложение Watch и приложение iOS используют общий контейнер группы или iCloud для обмена данными, вы должны изменить способ обмена этими данными в watchOS 2. Поскольку расширение WatchKit теперь работает на Apple Watch, расширение должно обмениваться данными с iOS. приложение без проводов. Вы можете сделать это с помощью объекта NSURLSession или платформы Watch Connectivity, которая поддерживает двунаправленную связь между вашим приложением iOS и расширением WatchKit.

Но как это работает с Core Data? Нужно ли мне поддерживать два отдельных хранилища, одно в папке Documents на часах, а другое на телефоне, и использовать платформу Watch Connectivity для синхронизации изменений? Я вижу, что watchOS 2.0 может получить доступ к платформе Core Data (он находится в списке Доступные технологии) ... но я просто не уверен, как это помогает, когда магазин находится на телефоне. Любая помощь / руководство приветствуются!


person Becky Hansmeyer    schedule 14.06.2015    source источник
comment
Привет, Вы решили эту проблему? Пожалуйста, помогите с кодом, как получить доступ к основным данным в Watch Kit OS 2   -  person Rajesh Maurya    schedule 12.02.2016


Ответы (2)


Да, вам придется поддерживать два отдельных магазина. Если одна из сторон является клиентом «только для чтения», а хранилище данных CoreData невелико и редко меняется, вы потенциально можете использовать API-интерфейс transferFile WatchConnectivity для передачи всего хранилища при каждом его изменении.

person ccjensen    schedule 15.06.2015
comment
Мне все еще нужно использовать Shared Group для доступа к базе данных основных данных iPhone в Watch Kit OS 2. - person Rajesh Maurya; 12.02.2016
comment
Нет, общая группа работает только для процессов, запущенных на одном устройстве. В этом случае вам придется использовать структуру WatchConnectivity для координации между процессами. - person ccjensen; 12.02.2016
comment
Итак, как я могу получить доступ к базе данных основных данных, которая хранится в приложении для iPhone. - person Rajesh Maurya; 12.02.2016
comment
Вы должны попросить отдельного SO покрыть это. Раздел комментариев не подходит для того, что - person ccjensen; 12.02.2016
comment
@ccjensen: Если возможно, не могли бы вы поделиться образцом проекта? Я тоже столкнулся с этой проблемой, и ваша помощь спасет мне жизнь. - person Muhammad Junaid Butt; 06.06.2016

Я рекомендую настроить синхронизацию с использованием фоновой передачи информации о пользователе для зеркального отражения каждой операции с базой данных в обоих направлениях (если требуется) после переноса хранилища при первом запуске.

В сеансе 713 WWDC - Знакомство с подключением часов рассматриваются необходимые механизмы. Хороший API, который они создали.

person Derek Pollard    schedule 18.06.2015
comment
Спасибо за видео рекомендацию; Я просто смотрел это, и это очень помогло! Я согласен насчет API ... он прост в использовании и выполняет свою работу. - person Becky Hansmeyer; 19.06.2015
comment
не могли бы вы помочь, как синхронизировать основные данные между iPhone и часами? - person Mukesh; 29.10.2015