WatchKit: Swift - Как я могу получить и поместить данные в свою базу данных sqlite, которая находится в папке документов моего приложения iPhone

У меня есть приложение для iOS, которое использует базу данных SQLite. Это работает очень хорошо. Теперь я добавил расширение приложения WatchKit и хотел бы подключиться к этой существующей базе данных, которая находится в папке «Документы» моего приложения для iPhone.

Может кто-нибудь показать мне, как это сделать?

Я уже создал группу приложений (одинаковую для всех расширений).

Если это имеет значение, приложение для iOS написано на Objective-C, а приложение для часов — на Swift.

Скриншот iPhoneApp и WatchApp


person Jurgen Dictus    schedule 15.07.2016    source источник


Ответы (1)


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

Общая группа приложений не будет выполнять то, что вам нужно. Вам нужно будет использовать Watch Connectivity, чтобы выполнить то, что вы хотите.

Подход 1:

Поддерживайте две отдельные базы данных — одну на телефоне и одну на часах — и синхронизируйте две отдельные базы данных.

Это было бы полезно, если бы часам требовался доступ ко всем без исключения данным и они должны были бы работать независимо от телефона, если бы он был вне досягаемости.

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

Вы также можете перенести всю базу данных между телефоном и часами, но обычно это менее эффективно, чем просто отправка изменений.

Подход 2:

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

Для чего-то вроде вашего приложения для дайвинга, возможно, оно передает только план недавнего или предстоящего погружения, вместо того, чтобы показывать каждый план погружения на меньшем экране.

updateApplicationContext хорошо подходит для этого подхода, чтобы передавать самую последнюю информацию, которая должна отображаться на часах.

person Community    schedule 15.07.2016
comment
@user4151918 user4151918 у вас есть пример кода для быстрого копирования базы данных в доступное для записи место. - person Rahul Vyas; 08.04.2020