2012-02-19 22 views
17

Tengo varias aplicaciones de iOS en el mercado y en todas ellas tengo un pequeño archivo de base de datos SQLite conectado a la aplicación para proporcionar al usuario mis datos. Una vez instalado, el usuario personaliza este DB al cambiar ciertas opciones.¿Dónde debo almacenar la base de datos SQLite para mi aplicación de iPhone?

Hasta ahora, todas estas aplicaciones almacenan la base de datos en NSDocumentsDirectory. Después de enviar mi última actualización, se rechazó para almacenar datos en la ubicación incorrecta. Para las aplicaciones rechazadas cambié la ubicación de almacenamiento a NSCachesDirectory. Ahora me temo que la memoria caché se borrará y borrará las personalizaciones de los usuarios. La aplicación seguiría funcionando, la base de datos se recrearía, pero todas las tablas cambiadas se restablecerían, lo que molestaría a los usuarios.

¿Dónde debe almacenarse este tipo de archivo de base de datos? ¿Tenía razón al ponerlo en el directorio de Docs? Según Apple, el directorio de Docs es para "Datos críticos" que son datos generados por el usuario o datos necesarios para el correcto funcionamiento de la aplicación. Siento que pertenece a esa categoría, persistir en la configuración de mis usuarios es un funcionamiento adecuado, pero ¿quién quiere esperar una apelación?

Respuesta

31

La guía de programación del sistema de archivos de Apple para iOS describe la ruta (application_home)/Library como un lugar para "crear subdirectorios personalizados para los archivos que desea copiar pero no para el usuario". La ruta (application_home)/Documents se describe como "el contenido de este directorio puede ponerse a disposición del usuario mediante el uso compartido de archivos".

Sus bases de datos no suenan como documentos, suenan como cachés privados que los usuarios no deberían conocer. Te recomiendo que crees un directorio como (application_home)/Library/Database y guardes archivos allí. El camino de caché que mencionas no me parece la mejor opción.

Realmente debería revisar toda la file system programming guide for iOS antes de enviar otra aplicación.

+0

¡Gran respuesta, gracias! – Lkabo

0

Si su base de datos contiene efectivamente contenido generado por el usuario, entonces el directorio de documentos es su ubicación correcta.

Sin embargo, menciona que persiste en "la configuración de los usuarios" ... Si los datos que persiste son más parecidos a configuraciones o preferencias, entonces deberían residir en el subsistema Predeterminado. Consulte la documentación para NSUserDefaults.

+1

Gracias por su respuesta, utilicé el fraseo incorrecto con 'persistente' ... Quise mantener los cambios de los usuarios en la base de datos. La respuesta anterior sugiere que el conjunto de directorios de la Biblioteca puede ser el lugar correcto. Al analizar esto, descubrí que una ubicación más apropiada puede ser el directorio Biblioteca/Soporte de aplicaciones. Intentaré ejecutar algunas pruebas con mis datos almacenados allí. – Lkabo

Cuestiones relacionadas