Приложения должны соответствовать рекомендациям по хранению данных iOS, иначе они будут отклонены в приложении, содержащем .sqlite3.

Я создал приложение для электронной книги, и оно содержит много изображений и файлов в формате PDF.

Я помещал загруженные изображения в /Library/Caches и помещал файлы pdf и файл .sqlite3 в /Documents.

теперь мое приложение отклонено, и это причина

2.23 Apps must follow the iOS Data Storage Guidelines or they will be rejected

Означает ли это, что я должен переместить все, что находится в /Documents в /Library/Caches? Если я оставлю файл .sqlite3 в папке /Documents, приложение снова отклонит его?

Заранее спасибо.


person user1553381    schedule 15.12.2012    source источник


Ответы (2)


2.23 означает, что вы должны помещать в /Documents только то, что нельзя повторно загрузить из Интернета. то есть пользовательские файлы. Все, что МОЖНО перезакачать, должно быть в Библиотеке/Кэшах.

Причина этого правила заключается в том, что /Documents копируется, и пользователям не нравится, если вы тратите их драгоценное пространство для резервных копий iClould.

person Cocoanetics    schedule 15.12.2012
comment
Файл .sqlite3 не загружается, поэтому я поместил его в /Documents и другие файлы PDF и изображения загружены, и я сделал их путь к библиотеке/кэшам. Ваш ответ означает, что я прав, не так ли? - person user1553381; 16.12.2012
comment
@Cocoanetics Помимо того, генерируются ли данные пользователями, необходимо учитывать еще один фактор: насколько важно, чтобы контент был доступен в автономном режиме? Например. для путеводителя, который, вероятно, будет использоваться за границей (-› дорогой роуминг), или для словаря, приложения для подкастов и т. д., может быть целесообразно поместить его в каталог, который не очищается системой автоматически (т. е. не в кэшах). ) и установите флажок «Не делать резервную копию». - person omz; 16.12.2012
comment
Правда, хотя оффлайн, возможно, крайний случай. В наших приложениях iCatalog мы помещаем каталоги в кэши, потому что печально известная очистка имеет тенденцию происходить очень редко, и если это происходит, то каталоги, вероятно, имеют меньший приоритет, чем другой ценный пользовательский контент. - Сказав это, я лично считаю, что загружаемый контент очень редко заслуживает того же уровня защиты от удаления, что и пользовательские данные. - person Cocoanetics; 16.12.2012
comment
@user1553381 user1553381 это зависит от того, насколько сложно восстановить базу данных sqlite. Если это просто локальная копия онлайн-данных, то она также должна быть помещена в кэш. Если он содержит информацию, которую пользователь не хочет потерять (флаги чтения, аннотации и т. д.), то документы — это самое подходящее место. - сказав это: вы никогда не должны помещать большие файлы в базы данных, iOS 5 дает вам внешние ссылки на файлы. там вы МОЖЕТЕ поместить файл в NSData, но внутри CoreData поместит его во внешний файл. Я предполагаю, что вы использовали слишком много места для резервных копий документов без уважительной причины. - person Cocoanetics; 16.12.2012
comment
Вы знаете, что НА САМОМ ДЕЛЕ не нравится пользователям? Приходится загружать все свои вещи снова и снова каждый раз, когда приложение обновляется. - person Tom Kincaid; 19.04.2014

Вам не обязательно помещать загруженные PDF-файлы и базы данных в каталог Caches. Альтернативой может быть использование атрибута «не делать резервную копию», как описано здесь: Технические вопросы и ответы QA1719. Как предотвратить резервное копирование файлов в iCloud и iTunes?.

person omz    schedule 15.12.2012