2011-02-25 8 views
12

sigo guardar archivos en un directorio privado en mi aplicación para iPad, es decir, el que está vuelto cuando uso:¿La actualización de las aplicaciones de iOS elimina los archivos del directorio de la biblioteca?

paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
documentsDirectory = [paths objectAtIndex:0]; 
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"Private Documents"]; 

Tenga en cuenta que también añado un subdirectorio a ella. Cuando actualizo la aplicación, los usuarios me dicen que su progreso en la aplicación está siendo destruido. ¿Los archivos de este NSLibraryDirectory se destruyen cada vez que actualizo la aplicación? Si es así, ¿debería usar NSDocumentDirectory en su lugar?

Además, ¿no hay forma de hacer una nueva actualización de mi aplicación para remediar esto sin destruir todos los archivos guardados de mis usuarios actuales? No parece que exista.

Respuesta

2

Debe guardarlos en la carpeta Documentos, es persistente en todas las actualizaciones.

MonoTouch: documentsDirectory = environment.specialfolder.personal;

Objective-C: NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)

+0

Realmente no entiendo la línea de código que tienes arriba. ¿Puedes explicar? Por lo que sé, puedo usar NSDocumentDirectory en lugar de lo que hice arriba y un subdirector debe ser protegido de ser borrado, ¿correcto? – Joey

+0

Sí, eso es correcto. El código anterior le brinda una ruta de cadena al directorio de documentos. Manera más limpia de hacerlo IMO. –

+0

Chris, ¿seguro que estás hablando de iOS? Porque no hay nada como "environment.specialfolder.personal". O está hablando de una solución personalizada para acceder a esto. –

3

También me gustaría añadir esta información como una experiencia personal con un gran juego en línea. No puede confiar al 100% en que su carpeta "Documento" y "Biblioteca" siempre estará allí. De hecho, no puede confiar en que su carpeta de aplicaciones seguirá en el mismo lugar en su dispositivo después de una actualización.

Déjame explicarlo un poco más. Cuando instale una aplicación en su dispositivo, la ruta real será/var/mobile/Applications/[alguna identificación de clase]/[su aplicación] .app/... No estamos seguros de quién define la identificación de clase de su aplicación (ya sea el iOS o la tienda de aplicaciones), pero esta identificación puede cambiar al actualizar el juego, lo que resulta en tener su aplicación en una carpeta totalmente diferente para que sus archivos antiguos ya no estén allí. Nuestro QA lo experimentó y nuestros usuarios también.

No entraré en detalles sobre cómo lo descubrimos y cómo nos las arreglamos para evitar esto (cosas de la compañía privada, mierda habitual ...), pero debe considerarlo si está haciendo una aplicación que afecta a toneladas de usuarios y podría actualizarse un par de veces. Puede haber sido arreglado desde entonces, pero siempre es bueno tener un plan de respaldo.

+0

En realidad creo que estoy recibiendo este problema en mi solicitud también ... – Peres

+0

Solo una pregunta, ¿el nombre de su aplicación agrega caracteres especiales en el nombre o espacios? Porque me pregunto ... – Peres

+2

La ruta recuperada a través de API de Apple proporciona abstracción sobre la dirección en la que se encuentra su aplicación. Durante el proceso de actualización, iOS realiza una copia de seguridad de su directorio de documentos en una nueva ubicación. El cambio en [algún ID de clase] o [nombre de aplicación] .app no ​​afecta/debería afectar los archivos del directorio de Documentos. Tus suposiciones son incorrectas. ref: https://developer.apple.com/library/ios/DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html#//apple_ref/doc/uid/TP40007072-CH8-SW10 – tGilani

17

Cuando un usuario descarga una actualización de la aplicación, iTunes instala la actualización en un nuevo directorio de la aplicación. A continuación, mueve los archivos de datos del usuario de la instalación anterior al nuevo directorio de la aplicación antes de eliminar la instalación anterior. Los archivos en los siguientes directorios están garantizados para ser preservados durante el proceso de actualización:

Application_Home/Documentos

Application_Home/Biblioteca

Aunque los archivos en otros directorios de usuario también se pueden mover más, usted no debe confiar en estando presentes después de una actualización.

Esto es provisto por apple oficialmente. Ver este enlace: iOS Developer Library - File Saved During App Updates

+3

el enlace "iOS Developer Library - El archivo guardado durante las actualizaciones de la aplicación "está roto – yair

+1

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTips/PerformanceTips.html –

Cuestiones relacionadas