Aplicación rechazada por almacenar database en el directory de documentos

Recientemente, mi aplicación fue rechazada de la tienda de aplicaciones para almacenar datos en el directory de documentos. Lo había movido allí porque con el cambio más reciente, el db ahora debe ser editable, ya no es de solo lectura.

Al investigar la solución, he leído que en realidad es preferible usar NSLibraryDirectory. ¿Esto es así, y lo más importante, abordará las preocupaciones de Apple? Su queja es que la aplicación permite que el usuario descargue mucho contenido (no deja que el usuario descargue ninguna a less que cuente la database), y que está almacenando "demasiados datos" en la "location incorrecta". Los datos son de 8 mb, pero podrían crecer hasta 10 o 12 mb máx.

En realidad es por iCloud.

utilizando iCloud, el directory de documentos de la aplicación se sincroniza con la nube y con otros dispositivos y, por lo tanto, Apple quiere que los desarrolladores almacenen solo esos datos en el directory de documentos que desean sincronizar con iCloud.

Llegué a conocer esta forma a uno de mis amigos que trabajan en Apple California y no estoy realmente seguro de si este material está en la documentation de Apple.

Tuve este problema con una actualización de un set de aplicaciones que desarrollo la otra semana. Lo curioso fue que solo cinco de las siete aplicaciones (exactamente la misma base de código) fueron rechazadas.

Creo que el problema en mi caso fue duplicar los activos del package .app en ~ / Documents.

Mi primer bash de cumplir con sus nuevas pautas de almacenamiento fue implementar el interruptor " do not backup en los files que estaba copyndo en ~ / Documentos. No hay trato con eso, así que tuve que cambiar mi implementación para no copyr los datos. Las aplicaciones fueron aprobadas rápidamente.

Probablemente su implementación sea diferente pero, según mi experiencia, a Apple ya no le gusta copyr cosas del package de aplicaciones en ~ / Documentos, ya que podría ser una duplicación de datos innecesariamente (en su opinión).

Sugieren copyr en ~ / Caches (o lo que sea), pero esto puede solucionarse en situaciones de poco almacenamiento y puede no ser el adecuado para su caso.

Espero que ayude.

Un producto que escribí hace un año utiliza CoreData (con un almacén de datos SQLite). Este file de database se almacena en ~ / Library / Application Support //. Esto fue aprobado por Apple sin problema.

"Application Support" no existe en ~ / Library, por lo que necesitará crearlo.

Los documentos no son un gran lugar para almacenar su file de database por varios motivos. Apple tiene sus razones, ya que rechazaron su aplicación. Otra razón es que el directory de Documentos es accesible por el usuario (a través de iTunes), ya less que el usuario que elimine su file de database no sea un gran problema para la operación de su aplicación, es mejor ponerlo donde no puedan hacer nada con él directamente y / o inadvertidamente.

Todavía puede colocar esos files en la carpeta Documentos, solo tiene que darles un atributo que le permita al sistema de files saber que no los respalda en el iCloud.

Este es un gran ejemplo de cómo hacerlo en diferentes versiones de iOS.