2009-09-13 10 views
6

Hallo Leute Ich habe Probleme mit NSUserDefaults und ich verstehe nicht ganz, was aufNSUserDefaults nicht sparend richtig

Meine App los ist hat 5 Ebenen und jede Ebene hat genau die gleiche Sache mit NSUserDefaults (Ruft die Ebenen Standardwerte , ändert den Wert, wenn der Benutzer den Level spielt und dann die Standardwerte festlegt und am Ende des Levels synchronisiert.) Die ersten 4 Levels ... funktionieren ohne Probleme, aber die letzte Ebene speichert die Werte nicht. Die App stürzt nicht ab und die letzte Ebene ist nicht das letzte, was passiert. Und ich habe sogar die Standardwerte synchronisiert, wenn die Anwendung beendet wird. Gibt es eine maximale Größe auf den NSUserDefaults oder ist es etwas, was jemand daran denken kann ich nicht, ich werde den Code schreiben, aber wie ich schon sagte die ersten vier Ebenen arbeiten perfekt

//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]; 

Wenn, wenn ich wechseln Für die Ansicht, die diese Standardwerte verwendet, sind die Werte korrekt, aber wenn ich die Anwendung beende und neu starte, werden diese Werte nicht gespeichert, jede andere Ebene führt denselben Prozess durch, dies ist die einzige Ebene, die nicht funktioniert.

Ich habe das schon eine ganze Weile lang angeschaut und ich hoffe, dass jemand da draußen auf dasselbe Problem gestoßen ist und mir einen Einblick geben kann, wie sie es gelöst haben.

Vielen Dank im Voraus BWC

+0

Schwer zu sagen, was Sie gepostet haben. Überprüfen Sie die Methode, die die Standardwerte nach dem Level speichert. – Jordan

Antwort

2

Irgendwo haben Sie so etwas wie:

// 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]; 

Wenn die anfängliche Vorgabe nicht LevelFive Standardwerte haben einrichten, dann würden die Gespräche scheitern.

Überprüfen Sie den Rückgabewert von -synchronize auf Fehler.

0

Ich entschied mich, dieses Problem beiseite zu legen und die Entwicklung fortzusetzen, die Sachen nach Level fünf hinzufügte, so dass der Benutzer Level durchlaufen und zum Hauptmenü zurückkehren konnte und so weiter ... und ich bin nicht sicher warum aber die userDefaults speichern jetzt für Stufe fünf, also weiß ich nicht, ob es so ist, denn bevor Stufe fünf das letzte war, was die Anwendung tat, und obwohl sie sich nicht selbst beendete und andere Dinge tat, schrieb sie vielleicht nicht Standardeinstellungen auf Festplatte ... Ich bin immer noch nicht sicher, was falsch war, aber es funktioniert jetzt und ich kann es nicht zu sehen, wenn ich einen Fehler mit der Synchronisierung bekommen kann ...

Danke für die Hilfe

4

Nur für den Fall accross dies jemand läuft: Beim Speichern eines NSDictionary oder NSArray (oder wandelbar Objekte beide) in den Benutzereinstellungen und sie habe ein NSURL Objekt gespeichert, wird es nicht die Daten auf Synchronisieren speichern!

+0

Wie nervig ist das ?! –

Verwandte Themen