Подтвердить что ты не робот

Как использовать coredata от iPhone на AppleWatch OS2?

Я попытался отправить его методом fileTransfer:

let modelURL = NSBundle.mainBundle().URLForResource("my_app", withExtension: "momd")!

WCSession.defaultSession().transferFile(modelURL, metadata:nil)

но я получаю ошибку:

Необязательный (Error Domain = WCErrorDomain Code = 7008 "Неверный параметр, переданный API WatchConnectivity". UserInfo = {NSLocalizedDescription = Неверный параметр, переданный API WatchConnectivity., NSLocalizedRecoverySuggestion = Только передать параметры правильного типа.})

Вы знаете, как синхронизировать CoreData между iPhone и WatchOS2?

4b9b3361

Ответ 1

Вы пытаетесь отправить весь каталог "momd". API-интерфейс передатчика WatchConnectivity, похоже, не поддерживает перенос каталогов и поэтому возвращает ошибку в -session: didFinishFileTransfer: error:

Для решения этой проблемы у вас есть несколько вариантов:

  • Сериализуйте директорию momd в один файл и затем десериализуйте на принимающей стороне (используя что-то вроде zip и т.д.)
  • Создайте формат передачи для передачи определенных фрагментов информации из базы данных.
    • Проект вытащит конкретную деталь из базы данных и отправит ее. Затем принимающая сторона добавит эту часть контента в свою собственную базу данных. Вероятно, вы используете API-интерфейс transferUserInfo с этим решением.

Решение № 2, вероятно, является лучшим, поскольку оно позволяет отправлять только изменения, которые были сделаны вместо всей базы данных, каждый раз, когда производится изменение, но будет больше работать.

Ответ 2

Это, вероятно, то, что вы ищете: Watch Connectivity Framework

Подробнее здесь: https://developer.apple.com/library/prerelease/ios/documentation/WatchConnectivity/Reference/WatchConnectivity_framework/index.html

И здесь: https://forums.developer.apple.com/thread/3927

Цитата из forums.developer.apple.com

Наблюдайте за тем, чтобы приложения, совместно использующие данные с приложениями iOS с использованием контейнера общей группы, должны были быть переработаны для обработки данных по-разному. В watchOS 2 каждый процесс должен управлять собственной копией любых общих данных в локальном каталоге контейнера. Для данных, которые фактически разделены и обновлены обоими приложениями, для этого необходимо использовать фреймворк Watch Connectivity.