Frage

Hallo Leute Ich habe Probleme mit NSUserDefaults und ich verstehe nicht ganz, was auf

los

Meine App hat 5 Ebenen und jede Ebene tut genau das gleiche mit NSUserDefaults (die Ebenen Standardwerte abruft, ändert den Wert, wenn der Benutzer das Niveau spielt und setzt dann die Standardwerte und syncronizes am Ende des Levels), um die ersten 4 Ebene ... Arbeit ohne Probleme, aber die letzte Ebene nicht die Werte speichern. Die App stürzt nicht ab und die letzte Ebene ist nicht das allerletzte, was passiert, und ich habe auch 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 perfekt funktionieren

//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 auf die Ansicht wechseln, die diese Standardeinstellungen verwendet sie Werte korrekt sind, aber wenn ich die Anwendung beenden und neu starten, werden diese Werte nicht gespeichert, tut jeder andere Ebene genau das gleiche Verfahren ist dies die einzige Ebene, die doesn ‚t Arbeit.

Ich habe schon eine ganze Weile auf diese starrte und ich hoffe, dass jemand da draußen hat in das gleiche Problem laufen und einen kleinen Einblick geben Sie mir auf, wie sie gelöst es.

Vielen Dank im Voraus BWC

War es hilfreich?

Lösung

NSUserDefaults vielleicht nicht die Möglichkeit hat, zu speichern, je nachdem wie der Prozess beendet wird.

Diese Antwort hat weitere Informationen: Warum ist NSUserDefaults Speichern nicht meine Werte ?

Andere Tipps

Für den Fall, läuft jemand accross dies: Wenn ein Speichern von NSDictionary oder NSArray (oder wandelbar Objekte von beiden) im Anwender Standardwerte, und sie haben eine NSURL Objekt gespeichert, es wird nicht die Daten auf synchonize sparen!

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änglichen Vorgaben Sie oben setzen nicht LevelFive Standardwerte haben, dann würden die Gespräche scheitern.

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

Ich beschloss, diese Frage auf die Seite legen und Entwicklung fortzusetzen, die Dinge nach Ebene enthielt Zugabe fünf so kann der Benutzer Schleife durch die Level und zurück zum Hauptmenü und so weiter und so fort ... und ich bin nicht sicher, warum, aber die userDefaults sparen für die Stufe fünf jetzt, damit ich weiß nicht, ob es ist, weil vor Stufe fünf das allerletzte, was war die Anwendung tat und obwohl es hat sich nicht beenden und tat andere Dinge, vielleicht war es nicht eigentlich die Standardeinstellungen schreiben auf der Festplatte ... ich bin immer noch nicht sicher, was falsch war, aber es funktioniert jetzt, und ich kann es nicht zu sehen, nicht bekommen, wenn ich einen Fehler mit dem synchronisieren bekommen ...

Danke für die Hilfe

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top