leicht gemacht: NSUserDefaults Startwerte festlegen

Hallo Zusammen,

in NSUserDefaults werden Einstellung des Nutzers für die App gespeichert – zum Beispiel, ob die App Sounds abspielen soll. Die Werte in NSUserDefaults werden persistiert und sind bei jedem Nachfolgenden Start wieder verfügbar. Als Speicherort für Spielständer ohne Ähnliches sollte es dennoch nicht genutzt werden.

Gelegentlich ist es sinnvoll für NSUserDefaults Startwerte zu initialisieren. So kann man zum Beispiel einstellen, dass der Sound einer App beim ersten Start einer App an ist. Einfach den Wert auf an stellen ist hier keine Option, da so bei jedem nachfolgenden Start der Wert immer wieder mit an überschrieben wird – auch wenn der Benutzer den Sound irgendwann aus gestellt hat. Auf den selben Weg können wir den ersten Start einer App herausfinden, um zum Beispiel dem Nutzer mit einem Tutorial zu unterstützen.

In applicationDidFinishLaunching registrieren wir die beschriebenen Werte mit ihren Startwerten.

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"isFirstLaunch",[NSNumber numberWithBool:YES], @"soundOn",nil]];   
}

In einer nachfolgenden init oder ViewDidLoad Methode können wir nun zum Beispiel den firstLaunch Wert abfragen. Liefert er YES zurück, wurde die App das erste mal gestartet und wir können besonderen Code ausführen. Natürlich dürfen wir nun nicht vergessen den Wert von isFirstLaunch auf NO zu setzten.

-(id) init {
      // Abfrage der vorher gesetzten Boolschen Variable in NSUserDefaults  
      if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isFirstLaunch"]) {   
         // der erste Start -> was besonderes machen
         // anschließend isFirstLaunch auf NO setzten, so dass beim nächsten mal die FirstStart Routine nicht erneut aufgerufen wird 
         [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"isFirstLaunch"];    
}

Bis bald.

2 thoughts on “leicht gemacht: NSUserDefaults Startwerte festlegen

  • Hey,

    kann man das auch verwenden um die ID eines Users bei erfolgreichem Login (MySQL-DB auf Server) zu speichern? Kann der Wert auch einfach wieder überschrieben werden bzw. kann man dort dann auch die Login-Daten speichern?

    • Ja, der Wert kann mit

      [[NSUserDefaults standardUserDefaults] set…. forKey:@“…“];

      überschrieben werden. Eine User ID auf diese Weise z.B. für die Dauer einer Session zu speichern könnte je nach Design der Anwendung Sinn machen. Login Daten würde ich dort nie speichern. Dort gehören sie nicht hin und zusätzlich sind sie dann meines Wissens nach nicht verschlüsselt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.