Как использовать 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?
Ответы
Ответ 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.