Swift - разделяет базу данных sqlite между приложением и расширением

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

Как это работает сейчас (я проверял), приложение имеет один экземпляр базы данных, а расширение имеет один экземпляр. Я только добавил один дБ. Кто-нибудь понял, почему у меня есть два экземпляра базы данных и почему я не могу получить доступ к данным, добавленным из приложения в расширение?

1 ответ

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

Если вы хотите использовать один и тот же файл SQLite как в своем приложении, так и в расширении, вам необходимо настроить разрешение "группы приложений" для них обоих. Это устанавливает новый каталог, к которому они оба могут получить доступ, и вы помещаете туда свой файл SQLite. Вы найдете этот каталог с помощью containerURLForSecurityApplicationGroupIdentifier: метод на NSFileManager,

Мне не ясно, будет ли используемый вами проект GitHub использовать группы приложений. Однако нет другого способа поделиться вашим файлом SQLite. Если этот проект не использует группы приложений, вам нужно либо исправить его, либо прекратить его использование.

Другие вопросы по тегам