Где я должен хранить базу данных SQLite для своего приложения для iPhone? - PullRequest
18 голосов
/ 19 февраля 2012

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

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

Где хранить этот тип файла базы данных?Правильно ли я поместил его в Docs dir?Согласно Apple, Docs dir предназначен для «Критических данных», которые представляют собой либо пользовательские данные, либо данные, необходимые для правильной работы приложения.Я чувствую, что он подпадает под эту категорию, сохранение настроек моих пользователей - это правильная операция, но кто хочет дождаться апелляции?

Ответы [ 3 ]

32 голосов
/ 19 февраля 2012

В руководстве Apple по программированию файловой системы для iOS путь (application_home)/Library описывается как место, где «создаются пользовательские подкаталоги для файлов, резервные копии которых вы хотите создать, но не предоставляете их пользователю». Путь (application_home)/Documents описывается как «содержимое этого каталога может быть доступно пользователю через общий доступ к файлам».

Ваши базы данных не похожи на документы, они звучат как частные кэши, о которых пользователи не должны знать. Я рекомендую вам создать каталог, такой как (application_home)/Library/Database и сохранить файлы там. Путь кеша, который вы упоминаете, мне не кажется лучшим вариантом.

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

1 голос
/ 15 июня 2018

Обновление за 6 лет:

Хранение данных в NSCachesDirectory вызвало ошибку, как и ожидалось, из-за того, что пользовательские пользовательские данные стирались всякий раз, когда устройство чувствовало, что это так.После многих попыток спорить по этому поводу с обзором приложений Apple, я наконец смог опубликовать обновление, в котором данные теперь хранятся в пользовательском каталоге в NSDocumentsDirectory (как и должно быть), что решило все вышеупомянутые проблемы.

0 голосов
/ 19 февраля 2012

Если ваша база данных действительно содержит сгенерированный пользователем контент, то каталог Documents находится в правильном месте.

Однако вы упоминаете, что сохраняете «настройки ваших пользователей» ... Если сохраняемые вами данные больше похожи на настройки или предпочтения, то они должны находиться в подсистеме «По умолчанию». См. Документацию для NSUserDefaults .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...