2012-01-21 2 views
2

My IOS Application было в обзоре, но было отклонено в отношении iOS Data Storage Guidelines. В конце концов, он был отклонен, потому что моя база данных Core Data (sqlite) находилась в папке /Documents. Я знал, что эта папка должна использоваться только, ее данные не могут быть восстановлены моим приложением. Причина, по которой я решил поместить его в любом случае, заключалась в том, что одно из объектов моей базы данных содержит атрибут, указывающий, была ли прочитана данная новость. Эта информация не может быть воссоздана. Этого недостаточно, чтобы поместить базу данных в папку /Documents?Основные данные iOS: когда данные восстанавливаются?

Другое дело, что текущая версия моего приложения не использует это значение для визуализации, читается ли новостной элемент или нет. Итак, должен ли я сообщить команде-исследователю об этом атрибуте и аргументе, почему я думаю, что он должен быть помещен в папку документа - или я должен просто переместить его в /Library/Cache/?

ответ

5

Группа проверки приложений хочет, чтобы вы разделили свои данные друг от друга. Храните повторно создаваемые части в папке Cache и материалы, которые невозможно воссоздать в папке «Документы». Все в порядке, если в документах есть немного вещей, которые теоретически могут быть воссозданы - никто даже не заметит заголовок или дату, но длинные текстовые документы, видео, аудио или изображения должны храниться в папке Cache, если они могут быть скачан позже.

Есть несколько различных способов, вы можете сделать это:

  1. Загруженный контент в папке Cache и только поместить имя файла Контента в базе данных Core Data (или вычислить имя файла из чего-то еще, как хэш SHA-1 URL, с которого он был загружен). Убедитесь, что ваш код будет повторно загружать любой контент, отсутствующий в кеше.

  2. Используйте два хранилища основных данных с одним координатором магазина. Обратите внимание, что вы не можете разделить атрибуты сущности в двух магазинах, поэтому вам, возможно, придется сломать некоторые из ваших объектов пополам. Вы также не можете создать отношения с объектом в одном хранилище с объектом в другом, поэтому вам нужно будет сохранить URI идентификатора объекта. Дополнительную информацию см. В разделе «Перекрестные хранилища» в руководстве по программированию основных данных "Relationships and Fetched Properties" section.

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

+0

Я думаю, что второе решение подойдет моей проблеме лучше всего. Однако мне приходится сталкиваться с некоторыми проблемами, связанными с подключением двух базовых моделей данных. Знаете ли вы гида или что-то, что может объяснить это мне? – dhrm

Смежные вопросы