2009-10-28 17 views
89

¿Es este el caso? ¿Se restablecen NSUserDefaults cuando envía una actualización a una aplicación en App Store, o se restablecen?¿Los NSUserDefaults persisten a través de una actualización de una aplicación en la tienda de aplicaciones?

Mi aplicación se cuelga cuando se actualiza pero no se cuelga cuando se descarga por completo, por lo que estoy tratando de determinar qué podría ser diferente en la sesión actualizada a la sesión recién descargada.

Cheers, Nick.

+0

Los archivos en ** Documentos ** y ** Biblioteca ** se ** preservarán ** como lo indica la documentación: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/ Conceptual/iPhoneOSProgrammingGuide/RuntimeEnvironment/RuntimeEnvironment.html # // apple_ref/doc/uid/TP40007072-CH2-SW7 – Geri

Respuesta

101

Por lo general, no se restablecen a menos que el usuario elimine la aplicación. Para datos básicos, NSUserDefaults es la mejor manera de guardar datos como preferencias, fechas, cadenas, etc. Si está buscando guardar imágenes y archivos, el sistema de archivos es una mejor opción.

+5

¿Hay algún lugar en la documentación de Apple que se menciona? –

+1

Lo siento, ¡me olvidé de agradecerte por tu respuesta rápida! - Si alguien puede encontrar un enlace a cualquier forma de documentación de Apple que diga esto, sería excelente ... En la documentación de NSUserDefaults no dice nada sobre esto, así que creo que asumí (incorrectamente) que los valores predeterminados se eliminaron. ¡Esta parece ser la forma más segura para que Apple actualice las aplicaciones de forma segura! –

+0

Podría ser la forma más segura, pero sería increíblemente molesto para los usuarios si tuvieran que volver a establecer todas sus preferencias cada vez que se actualizara una aplicación. Generalmente tengo tres o cuatro actualizaciones de aplicaciones por día; Estoy seguro de que otros usuarios de iPhone tienen aún más. Limpiar las preferencias para cada actualización básicamente haría que mi iPhone no se pueda usar. –

7

Creo que la respuesta es SÍ, persistirá. Esto también está completamente documentado en el capítulo Directorio de aplicaciones en la Guía de programación del sistema operativo Apple iPhone.

4
  1. Respuesta directa a la pregunta publicada: YES.
  2. Tu problema: Tu aplicación se cuelga debido a problemas de lógica. Supongamos que almacena un objeto en los valores predeterminados y la aplicación verifica su valor al iniciarse (o en otro lugar). En su actualización, puede cambiar la forma en que se verifica o se usa, p. esperas un valor, pero el objeto es nulo, o viceversa. Esto puede causar un SIGABRT o EXC_BAD_ACCESS.
2

Si tuviera modelo CoreData y ha cambiado algo en su modelo y actualizar, sin la gestión de la migración, eso es probablemente por lo cual su aplicación se bloquea en la actualización ...

+0

Supongo que podría ser un caso :) no un NSUserdefault –

1

que tienen una experiencia similar. Nuestra aplicación almacena un número de versión en Settings.Bundle/Root.Plist. Esto se muestra a través de la aplicación de configuración de iPhone. Lo que encontramos es que en una instalación, el número de versión se carga desde el paquete de la aplicación; por lo tanto, el número de versión es correcto. En una actualización, sin embargo, el número de versión no cambia. Esto da la impresión de que el usuario está ejecutando una versión anterior de la aplicación. No tenemos ninguna lógica vinculada al número de versión, solo es para mostrar (podría ser utilizada por el personal del centro de contacto cuando diagnostique fallas).

Nuestra experiencia es NSUserDefaults no se borran cuando un usuario actualiza nuestra aplicación, pero la pantalla de configuración tampoco se actualiza.

Cuestiones relacionadas