Quiero establecer algunos valores iniciales para mis claves NSUserDefault para que la primera ejecución de la aplicación tenga algunas configuraciones iniciales razonables. Pensé que me encontré con una forma simple de hacer esto en el paquete de aplicaciones .plist, pero ahora no puedo encontrarlo. ¿Algunas ideas?¿Cómo establecer los valores iniciales para NSUserDefault Keys?
Respuesta
Se debe utilizar el método de NSUserDefaults
registerDefaults
. Prepare un archivo plist en su paquete que contenga las preferencias predeterminadas y luego use ese plist para registrar los valores predeterminados.
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
Tiene que ejecutar este código en cada inicio de su aplicación. Agregará estos valores a un dominio separado en la jerarquía de valores predeterminados del usuario. Siempre que los valores predeterminados de usuario de su aplicación no proporcionen un valor para cierta clave, NSUserDefaults
recurrirá a este dominio y recuperará el valor desde allí.
Parece que esto registra los valores predeterminados en una ubicación de memoria volátil. No quiero que vuelva a los valores predeterminados muy a menudo. Esto es principalmente para el primer lanzamiento. ¿Se conservarán los valores establecidos por el usuario o se sobreescribirán ocasionalmente con esto? – Suz
¿Qué quiere decir con "ubicación de memoria volátil"? Tienes que ejecutar este código en cada lanzamiento de tu aplicación. Agregará estos valores a un dominio separado en la jerarquía de valores predeterminados del usuario. Siempre que los valores predeterminados de usuario de su aplicación no proporcionen un valor para cierta clave, 'NSUserDefaults' volverá a este dominio y recuperará el valor desde allí. –
La Guía de programación predeterminada del usuario enumera que NSRegistrationDomain tiene un estado 'volátil', en oposición a 'persistente'. Por lo tanto, la configuración predeterminada del usuario en sí misma es persistente y los valores predeterminados son volátiles y deben volver a cargarse en cada inicio de la aplicación. Me parece extraño que el valor de "retroceso" sea menos persistente que la configuración del usuario. – Suz
if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"])
{
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];
[[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NB: No se ha probado, hecho de la memoria
Esto realmente no es la forma correcta de hacerlo. Funciona, pero no es lo que sugiere Apple. Utilice -registerDefaults como se describe en la respuesta por @ole, o agréguelos directamente al dominio NSRegistrationDomain. –
Estoy de acuerdo. No sabía sobre registerDefaults cuando escribí esta respuesta, pero la uso ahora. –
Si tiene muchos valores por defecto, vamos a utilizar ola's answer, de lo contrario esto es bueno para unos parametros
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) {
[defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];
// Set initial values
...
[defaults synchronize];
}
-(void) loadDef
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
_removeAd=[userDefaults boolForKey:SAVE_AD_STATUS];
NSString* strDefSetting=[userDefaults stringForKey:SAVE_STATUS_ADSETTING];
if(strDefSetting==nil
||[strDefSetting isEqualToString:@""]
)
{
[email protected]"0.5";
}
_floatAdmob=strDefSetting.floatValue;//0.5;
}
- 1. Django: ¿Cómo establecer los valores iniciales para un campo en un formset de modelo en línea?
- 2. cómo establecer los valores a los símbolos
- 3. ¿Debo establecer los valores de Cadena Java iniciales de nulo en ""?
- 4. NSString eliminando los ceros iniciales?
- 5. ¿Cómo establecer los datos iniciales para el modelo de administrador de Django Agregar formulario de instancia?
- 6. Construcción de clase con valores iniciales
- 7. Django: ¿Cómo comprobar si el usuario dejó todos los campos en blanco (o los valores iniciales)?
- 8. ¿Cómo llenar un vector con valores iniciales no triviales?
- 9. multiselect, establecer los valores seleccionados por defecto
- 10. CSV para Excel, incluidos los ceros iniciales y las comas
- 11. ¿Cómo establecer los valores predeterminados para los campos en los registros en Clojure?
- 12. ¿Cómo establecer los valores predeterminados para los parámetros de los métodos de url helper?
- 13. ¿Cómo obtener una actualización NSUserDefault en iOS 4?
- 14. ¿Diferencia entre Keychain y NSUserDefault?
- 15. ¿Cómo se pueden establecer los valores tipados de valores C# en NHibernate con los parámetros IQuery?
- 16. ¿Cómo cargar datos iniciales (o datos iniciales) utilizando Java JPA?
- 17. Oracle: búsqueda de valores con espacios iniciales o finales
- 18. Cómo establecer los valores predeterminados del diálogo JTry UI
- 19. Cómo establecer los rangos de los valores tomados por ggplot2 stat_smooth() para ajustar líneas?
- 20. PHP Convert Array Keys
- 21. Array PHP - Convertir valores de matriz en Keys
- 22. cadena de formato, eliminar los caracteres iniciales
- 23. WPF - Send Keys Redux
- 24. Recortar los espacios iniciales, incluidas las pestañas
- 25. ¿Por qué las variables locales tienen valores iniciales?
- 26. IOS: almacenar una matriz con NSUserDefault
- 27. Cross-browser innerText para establecer valores
- 28. ¿Quitar los espacios iniciales y finales?
- 29. MySQL disable & enable keys
- 30. Vim comma command keys
Comprobar esto: http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault -usage.html –