Ist es in Ordnung, Standardwerte für NSUserDefaults aus mehreren Klassen in meiner App zu registrieren?

8

Ich habe gelesen und verstanden, wie NSUserDefaults zum Speichern von Einstellungen für meine App im Dateisystem verwendet werden kann. Mir ist auch bewusst, dass Voreinstellungen registriert werden müssen, bevor sie später in der App verwendet werden.

Ich bin mir jedoch nicht sicher, ob es in Ordnung ist, Standardwerte aus verschiedenen Klassen in meiner App zu registrieren. Zum Beispiel möchte ich in AppDelegate eine Einstellung registrieren, die zur gesamten App gehört, aber in einer Theme-Klasse möchte ich Einstellungen verwenden und damit registrieren, die nur zum Abrufen und Festlegen des Themas der App verwendet werden. Weitere Klassen haben ihre eigenen Bedürfnisse, was die Benutzereinstellungen betrifft. Dies gilt für mehrere Teile eines Projekts, an dem ich arbeite.

Ist dies der Weg, um die Präferenzen bei den Klassen zu halten, die sie zur richtigen Arbeitsweise haben?

    
Richard Altenburg - Brainchild 04.10.2012, 18:30
quelle

4 Antworten

13

Ja, Sie können Standardwerte aus mehreren Klassen registrieren. Wenn Sie einen neuen Standard registrieren, fügt er das neue Schlüssel / Wert-Paar nur zur Registrierungsdomäne hinzu (es gibt nur eine davon für die App). Ich denke, die Art, wie du es machst, ist ziemlich vernünftig.

    
rdelmar 04.10.2012, 20:02
quelle
2

Die NSUserDefaults beziehen sich auf die gesamte Anwendung. Es ist also nicht wichtig, wo Sie sie lesen / speichern: Die Schlüssel sind für jede Klasse sichtbar, selbst wenn sie in einer anderen Klasse eingestellt sind.

Ich persönlich versuche, meine eigenen Schemata zu verwenden, daher könnten verwandte Einstellungen "nah" sein.

d. h .:

%Vor%

Ich hoffe, es hilft.

    
NovaOverflow 04.10.2012 18:38
quelle
1

Dies ist nicht notwendig, aber wenn Sie Ihre Voreinstellungsdatei nach Klassen sortieren möchten, können Sie den Klassennamen als Teil des Schlüssels angeben. Zum Beispiel:

%Vor%

Dabei ist prefName der Name der von Ihnen gespeicherten Voreinstellung. Auf diese Weise können Sie denselben Präferenznamen mit verschiedenen Klassen verwenden und sich nicht darum kümmern, dass sie sich gegenseitig überschreiben. Aber wie andere gesagt haben, kann NSUserDefaults von einem beliebigen Ort in der Anwendung aufgerufen werden, es sei denn, Sie haben eine spezielle Notwendigkeit dafür.

    
Jonathan Zdziarski 04.10.2012 19:24
quelle
0

Wenn Sie [NSUserDefaults standardUserDefaults] verwenden, das innerhalb der gesamten Anwendung freigegeben wird. Und Sie können Ihre eigenen Standardklassen für klassenspezifische Einstellungen verwenden.

    
Bartu 04.10.2012 18:36
quelle