2009-09-13 11 views
6

Hola chicos estoy teniendo problemas con NSUserDefaults y yo no entiendo muy bien lo que está pasandoNSUserDefaults no ahorrando adecuadamente

Mi aplicación tiene 5 niveles y cada nivel hace exactamente lo mismo con NSUserDefaults (Recupera los valores predeterminados de los niveles , cambia el valor a medida que el usuario juega el nivel y luego establece los valores predeterminados y sincroniza al final del nivel) los primeros 4 niveles ... funcionan sin problemas, pero el último nivel no guarda los valores. La aplicación no falla y el último nivel no es lo último que sucede, e incluso tengo los valores predeterminados sincronizados cuando la aplicación finaliza. ¿Existe un tamaño máximo de los NSUserDefaults o hay algo que cualquiera puede pensar que no he, voy a publicar el código de abajo pero como he dicho los primeros cuatro niveles funciona perfectamente

//header 
NSUserDefaults *userData; 


@property(nonatomic,retain) NSUserDefaults *userData; 


//class file 
//Sets the boolean variables for the class to use 
userData = [NSUserDefaults standardUserDefaults]; 
boolOne = [userData boolForKey:@"LevelFiveBoolOne"]; 
boolTwo = [userData boolForKey:@"LevelFiveBoolTwo"]; 
boolThree = [userData boolForKey:@"LevelFiveBoolThree"]; 
boolFour = [userData boolForKey:@"LevelFiveBoolFour"]; 
boolFive = [userData boolForKey:@"LevelFiveBoolFive"]; 
boolSix = [userData boolForKey:@"LevelFiveBoolSix"]; 
boolSeven = [userData boolForKey:@"LevelFiveBoolSeven"]; 

//End Of Level 
[userData setBool:boolOne forKey:@"LevelFiveBoolOne"]; 
[userData setBool:boolTwo forKey:@"LevelFiveBoolTwo"]; 
[userData setBool:boolThree forKey:@"LevelFiveBoolThree"]; 
[userData setBool:boolFour forKey:@"LevelFiveBoolFour"]; 
[userData setBool:boolFive forKey:@"LevelFiveBoolFive"]; 
[userData setBool:boolSix forKey:@"LevelFiveBoolSix"]; 
[userData setBool:boolSeven forKey:@"LevelFiveBoolSeven"]; 
[userData synchronize]; 

Cuando cuando cambio Para la vista que utiliza estos valores predeterminados, los valores son correctos, pero cuando finalizo la aplicación y la reinicio, estos valores no se guardan, cada otro nivel realiza exactamente el mismo proceso, este es el único nivel que no funciona.

Me he fijado en esto durante bastante tiempo y espero que alguien haya tenido el mismo problema y pueda darme una idea de cómo lo resolvieron.

gracias de antemano BWC

+0

Difícil de decir de lo que has publicado. Verifique dos veces el método que guarda los valores predeterminados después del nivel. – Jordan

Respuesta

2

En algún lugar que tener algo como:

// load the default values for the user defaults 
userDefaultsValuesPath=[[NSBundle mainBundle] pathForResource:@"UserDefaults" ofType:@"plist"]; 
userDefaultsValuesDict=[NSDictionary dictionaryWithContentsOfFile:userDefaultsValuesPath]; 

// set them in the standard user defaults 
[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict]; 

Si los valores predeterminados de que está configurando no tienen valores predeterminados LevelFive, a continuación, las llamadas fallarían.

Compruebe el valor de retorno desde -sincronizar para ver si hay errores.

0

Decidí dejar este tema a un lado y continuar el desarrollo que incluía agregar elementos después del nivel cinco para que el usuario pueda recorrer los niveles y regresar al menú principal, y así sucesivamente ... y no estoy seguro de por qué pero los userDefaults están ahorrando para el nivel cinco ahora, así que no sé si es porque antes el nivel cinco era lo último que hacía la aplicación y, aunque no terminaba e hizo otras cosas, tal vez no estaba escribiendo el predeterminado en el disco ... Todavía no estoy seguro de lo que estaba mal, pero está funcionando ahora y no puedo ver si no puedo ver si puedo obtener un error con la sincronización ...

Gracias por la ayuda

4

Sólo en caso de que alguien que corre por la siguiente: Al almacenar una NSDictionary o NSArray (o mutables objetos de ambos) en los valores predeterminados de usuario y tiene un NSURL Objeto almacenado, ¡no guardará los datos en sincronizar!

+0

¡Qué molesto es eso! –

Cuestiones relacionadas