NSUserDefaults boolforKey Begrenzung von Design?
-
25-09-2019 - |
Frage
Die NSUserDefaults
API-Dokumentation hat die boolForKey:
Nachricht, die wie folgt beschrieben wird -
boolForKey:
Gibt den Booleschen Wert mit dem angegebenen Schlüssel zugeordnet ist.
- (BOOL)boolForKey:(NSString *)defaultName
Rückgabewert Wenn ein boolescher Wert mit Default in den Anwendervorgaben verbunden ist, wird dieser Wert zurückgegeben. Andernfalls wird NO zurückgegeben.
Da ein [[NSUserDefaults standardUserDefaults] boolForKey:@"some_Key"]
ein NO zurück gibt es entweder sein kann, weil der Schlüssel nicht vorhanden ist oder der Schlüssel vorhanden ist und hat einen Wert boolean
NO. Wie können wir unterscheiden? Ab jetzt kann ich nur vermeiden, in erster Linie in diese Situation zu bekommen.
Lösung
Sie verwenden die Benutzereinstellungen falsch. Bei der Vorstellung der App, werden Sie zum Aufruf -[NSUserDefaults registerDefaults:]
mit einem Wörterbuch angenommen, dass die Standardwerte für alle Einstellungen enthält.
Dann, wenn der Benutzer eine Präferenz nicht festgelegt hat, -boolForKey
den Standardwert zurück.
Andere Tipps
Mit der -objectForKey:
Methode. Dies wird Ihnen sagen, ob der Schlüssel vorhanden ist.