Проблемы с рекомендациями по хранению данных iOS для обратно совместимого приложения

Я разрабатываю приложение для iOS, которое должно поддерживать iOS 5+. Я прочитал iOS Data Storage Guidelines, чтобы подготовить приложение к отправке, и прочитал несколько вопросов и решений об этих рекомендациях здесь, в Stackoverflow, но у меня все еще есть некоторые сомнения относительно того, как мне с этим справиться.

У меня есть база данных sqlite, таблицы которой определены в файле .sqlite. Я копирую этот файл в папку \Documents при запуске приложения и всегда храню такой файл в папке \Documents. Эта база данных, во-первых, содержит некоторые наборы фиксированных данных, которые могут понадобиться приложению (списки городов для выбора и тому подобное), а остальные — это данные, зависящие от пользователя, которые будут загружены. Я прочитал это сообщение: Приложения должны соответствовать Руководству по хранению данных iOS, иначе они будут отклонены в приложении, содержащем .sqlite3, но я до сих пор не знаю, какие критерии следует применять. .sqlite нельзя загрузить, он включен в поддерживаемые файлы проекта Xcode, а некоторые исходные данные вставляются из приложения, и его нельзя загрузить. Данные, зависящие от пользователя, ну, я могу загрузить их, когда мне нужно. Я не интегрировал какие-либо материалы iCloud в свое приложение. Итак, правильно ли всегда хранить файл .sqlite в Документах? Насколько я знаю, вам нужен файл для выполнения всех операций с базой данных...

Как я уже сказал, я не включил в свое приложение какой-либо код, связанный с iCloud, и на самом деле я не знаю, как управляется iCloud, потому что я никогда не говорил об этом, делаются ли в любом случае резервные копии приложения? Должен ли я использовать флаги, которые говорит iOS Data Storage Guidelines, чтобы предотвратить резервное копирование файлов? Мне нужно некоторое руководство относительно резервных копий и соображений iCloud.

И еще одно: мое приложение также загружает некоторые пользовательские изображения. Я показываю их в нескольких представлениях по всему приложению, поэтому мне нужно, чтобы они сохранялись при нормальной работе приложения. Тем не менее, это загружаемый контент. Итак, где я должен их разместить?

Большое спасибо!


person AppsDev    schedule 11.10.2013    source источник


Ответы (1)


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

Загруженные изображения, вероятно, должны находиться в кеше, но вы также можете оставить их в документах, если установите атрибут «не делать резервную копию».

Вы можете установить атрибут пропуска резервного копирования следующим образом:

    BOOL success = [url setResourceValue: [NSNumber numberWithBool: skip]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];
person Daniel Broad    schedule 11.10.2013
comment
Спасибо! Как я могу установить этот атрибут? - person AppsDev; 12.11.2013
comment
Должен ли я установить атрибут для всех файлов в Documents, так как я не интегрируюсь с iCloud? - person AppsDev; 12.11.2013
comment
добавлен код в ответ для установки атрибута. Нет, вы не должны устанавливать его на все, так как это исключит файлы из резервной копии телефона, и вы, безусловно, захотите создать резервную копию своей базы данных. - person Daniel Broad; 13.11.2013