Arbeiten mit Benutzerstandardeinstellungen in Xamarin.iOS

In diesem Artikel wird die Arbeit mit NSUserDefault behandelt, um Standardeinstellungen in einer Xamarin.iOS-App oder -Erweiterung zu speichern.

Die NSUserDefaults Klasse bietet eine Möglichkeit für iOS-Apps und Erweiterungen, programmgesteuert mit dem systemweiten Standardsystem zu interagieren. Mithilfe des Standardsystems kann der Benutzer das Verhalten oder die Formatierung einer App so konfigurieren, dass sie ihren Vorlieben entspricht (basierend auf dem Design der App). Wenn Sie z. B. Daten in Metrischen und imperialen Maßen darstellen möchten, oder wählen Sie ein bestimmtes UI-Design aus.

Wenn Sie mit App-Gruppen verwendet werden, NSUserDefaults können Sie auch zwischen Apps (oder Erweiterungen) innerhalb einer bestimmten Gruppe kommunizieren.

Informationen zu Benutzerstandardeinstellungen

Wie oben erwähnt, können Benutzerstandardwerte (NSUserDefaults) zu einer App (oder Erweiterung) hinzugefügt und verwendet werden, um konfigurierbare Optionen bereitzustellen, die der Endbenutzer ändern kann, um das Aussehen oder den Betrieb der App zur Laufzeit anzupassen.

Wenn Ihre App zum ersten Mal ausgeführt wird, NSUserDefaults lesen Sie die Schlüssel und Werte aus der Benutzerstandarddatenbank der App und speichert sie im Arbeitsspeicher zwischen, um das Öffnen und Lesen der Datenbank bei jeder Erforderlichen eines Werts zu vermeiden.

Wichtig

Apple empfiehlt dem Entwickler nicht mehr, die Synchronize Methode zum direkten Synchronisieren des Speichercaches mit der Datenbank aufzurufen. Stattdessen wird er automatisch in regelmäßigen Intervallen aufgerufen, um den Speichercache mit der Standarddatenbank eines Benutzers synchron zu halten.

Die NSUserDefaults Klasse enthält mehrere Komfortmethoden zum Lesen und Schreiben von Einstellungswerten für allgemeine Datentypen, z. B. Zeichenfolge, ganzzahlig, float, boolean und URLs. Andere Datentypen können mithilfe NSDatavon , dann aus der Standarddatenbank des Benutzers gelesen oder geschrieben werden. Weitere Informationen finden Sie in den Apple-Einstellungen und Einstellungen Programmierhandbuch.

Zugreifen auf die freigegebene NSUserDefaults-Instanz

Die Standardinstanz für freigegebene Benutzer bietet Zugriff auf die Benutzerstandardeinstellungen für den aktuellen Benutzer des Geräts. Wenn das Shared Defaults-Objekt nicht vorhanden ist, wird es beim ersten Zugriff erstellt und mit den folgenden Informationen initialisiert:If the Shared Defaults object doesn't exist, it is created the first time it is accessed and initialized with the following information:

  • Eine NSArgumentDomain aus der aktuellen App analysierte Standardeinstellung.
  • Der Bündelbezeichner der App Standard.
  • Eine NSGlobalDomain Bestehend aus den Standardeinstellungen, die von allen Apps gemeinsam verwendet werden.
  • Eine separate Do Standard für jede der bevorzugten Sprachen des Benutzers.
  • Eine NSRegistrationDomain Mit einer Reihe temporärer Standardwerte, die von der App geändert werden können, um sicherzustellen, dass Suchvorgänge immer erfolgreich sind.

Verwenden Sie den folgenden Code, um auf die Standardinstanz für freigegebene Benutzer zuzugreifen:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;

Zugreifen auf eine App-Gruppe NSUserDefaults-Instanz

Wie bereits erwähnt, NSUserDefaults kann mithilfe von App-Gruppen innerhalb einer bestimmten Gruppe zwischen Apps (oder Erweiterungen) kommuniziert werden. Zunächst müssen Sie sicherstellen, dass die App-Gruppe und die erforderlichen App-IDs im Abschnitt "Zertifikate, Bezeichner und Profile " im iOS Dev Center ordnungsgemäß konfiguriert und in der Entwicklungsumgebung installiert wurden.

Als Nächstes müssen Ihre App- und/oder Erweiterungsprojekte über eine der oben erstellten gültigen App-IDs verfügen, und die Entitlements.plist Datei muss im App-Bündel enthalten sein, wobei die App-Gruppen aktiviert und angegeben sind.

Auf diese Weise kann über den folgenden Code auf die standardeinstellungen für die freigegebene App-Gruppe zugegriffen werden:

// Get App Group User Defaults
var plist = new NSUserDefaults ("group.com.xamarin.todaysharing", NSUserDefaultsType.SuiteName);

Wo group.com.xamarin.todaysharing befindet sich die App-Gruppe in Zertifikaten, Bezeichnern und Profilen , auf die Sie zugreifen möchten. Weitere Informationen finden Sie in der Dokumentation zu App-Gruppenfunktionen.

Lesen von Standardwerten

Nachdem Sie auf die gewünschte Benutzerstandarddatenbank zugegriffen haben, können Sie Werte aus den Standardwerten mithilfe von Schlüssel-Wert-Paaren und mehreren Komfortmethoden basierend auf dem Typ der zu lesenden Daten lesen:

  • ArrayForKey - Gibt ein Array für NSObjects den angegebenen Schlüsselwert zurück.
  • BoolForKey - Gibt einen booleschen Wert für den angegebenen Schlüssel zurück.
  • DataForKey - Gibt ein NSData Objekt für den angegebenen Schlüssel zurück.
  • DictionaryForKey - Gibt einen NSDictionary wert für den angegebenen Schlüssel zurück.
  • DoubleForKey - Gibt einen doppelten Wert für den angegebenen Schlüssel zurück.
  • FloatForKey - Gibt einen Float-Wert für den angegebenen Schlüssel zurück.
  • IntForKey - Gibt einen ganzzahligen Wert für den angegebenen Schlüssel zurück.
  • StringArrayForKey - Gibt ein Array von String Objekten aus dem angegebenen Schlüsselwert zurück.
  • StringForKey - Gibt einen Zeichenfolgenwert für den angegebenen Schlüssel zurück.
  • URLForKey - Gibt einen NSUrl Wert für den angegebenen Schlüssel zurück.

Beispielsweise würde der folgende Code einen booleschen Wert aus den Benutzerstandardwerten lesen:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Get value
var useHeader = plist.BoolForKey("UseHeader");

Schreiben von Standardwerten

Genau wie beim Lesen von Werten oben können Sie, nachdem Sie auf die gewünschte Benutzerstandarddatenbank zugegriffen haben, Werte mithilfe von Schlüssel-Wert-Paaren und mehreren Komfortmethoden basierend auf dem Typ der geschriebenen Daten in die Standardwerte schreiben:

  • SetBool - Schreibt den angegebenen booleschen Wert in den angegebenen Schlüssel.
  • SetDouble - Schreibt den angegebenen doppelten Wert in den angegebenen Schlüssel.
  • SetFloat - Schreibt den angegebenen Float-Wert in den angegebenen Schlüssel.
  • SetString - Schreibt den angegebenen Zeichenfolgenwert in den angegebenen Schlüssel.
  • SetURL - Schreibt den angegebenen URL-Wert (NSUrl) in den angegebenen Schlüssel.

Beispielsweise würde der folgende Code einen booleschen Wert in die Benutzerstandardwerte schreiben:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Save value
plist.SetBool(useHeader, "UseHeader");
...

Wichtig

Wenn Ihre App zum ersten Mal ausgeführt wird, NSUserDefaults lesen Sie die Schlüssel und Werte aus der Benutzerstandarddatenbank der App und speichert sie im Arbeitsspeicher zwischen, um das Öffnen und Lesen der Datenbank bei jeder Erforderlichen eines Werts zu vermeiden.

Zusammenfassung

In diesem Artikel wurde die NSUserDefaults Klasse behandelt und erläutert, wie sie verwendet werden kann, um eine Reihe von Optionen bereitzustellen, die der Endbenutzer zum Konfigurieren Ihrer Xamarin.iOS-App verwenden kann. Darüber hinaus wurde die Verwendung von App-Gruppen für die Kommunikation zwischen einer Erweiterung und der übergeordneten App oder zwischen Apps in einer Gruppe behandelt.