Was ist SwiftyUserDefaults und warum braucht man es?
SwiftyUserDefaults ist eine leichte, aber leistungsstarke Wrapper-Bibliothek für die Standardklasse UserDefaults in Swift. Wenn Sie schon einmal direkt mit UserDefaults gearbeitet haben, wissen Sie, dass das mühsam sein kann: Sie müssen viel Boilerplate-Code schreiben, um Werte zu speichern und abzurufen, Datentypen explizit angeben, String-Keys verwenden (was Tippfehler begünstigt) und optionale Werte behandeln.
SwiftyUserDefaults löst all diese Probleme. Es bietet:
- Statische Typisierung: Der Compiler prüft die Typen, was Laufzeitfehler ausschließt.
- Globalen Zugriff: Zugriff auf Werte über die praktische Eigenschaft
Defaults. - Unterstützung für benutzerdefinierte Typen: Sie können beliebige eigene Strukturen und Klassen speichern, indem Sie das Protokoll
DefaultsSerializableimplementieren. - Syntaktischer Zucker: Die Arbeit mit UserDefaults fühlt sich an wie die Arbeit mit normalen Eigenschaften.
- Sicherheit: Das Risiko von Tippfehlern in String-Keys entfällt.
Die Bibliothek eignet sich ideal zum Speichern kleiner Datenmengen: App-Einstellungen, UI-Status, Authentifizierungs-Tokens usw. Sie ist nicht für die Speicherung großer Datenmengen gedacht – dafür gibt es Core Data, Realm oder Dateien.
Installation
SwiftyUserDefaults wird über Swift Package Manager (SPM), CocoaPods und Carthage verteilt. Hier sind die beiden gängigsten Methoden.
Swift Package Manager (empfohlen)
- Öffnen Sie in Xcode das Menü:
File → Add Packages... - Fügen Sie die Repository-URL ein:
https://github.com/sunshinejr/SwiftyUserDefaults.git - Wählen Sie die Version (empfohlen wird die neueste stabile Version) und klicken Sie auf
Add Package. - Stellen Sie sicher, dass das Paket zu Ihrem Target hinzugefügt wurde.
CocoaPods
Fügen Sie in Ihrem Podfile hinzu:
target 'YourAppTarget' do
use_frameworks!
pod 'SwiftyUserDefaults', '~> 5.3'
end
Führen Sie dann pod install aus.
Nach der Installation importieren Sie die Bibliothek in der gewünschten Datei:
import SwiftyUserDefaults
Schnellstart
Kommen wir direkt zum Code. So sieht ein typisches Szenario mit UserDefaults ohne und mit SwiftyUserDefaults aus.
Ohne SwiftyUserDefaults (Standardansatz)
// Speichern
UserDefaults.standard.set("Max", forKey: "user_name")
UserDefaults.standard.set(30, forKey: "user_age")
UserDefaults.standard.set(true, forKey: "is_logged_in")
// Lesen
let name = UserDefaults.standard.string(forKey: "user_name") ?? ""
let age = UserDefaults.standard.integer(forKey: "user_age")
let isLoggedIn = UserDefaults.standard.bool(forKey: "is_logged_in")
Mit SwiftyUserDefaults
// Schlüssel definieren (kann in einer separaten Datei erfolgen)
extension DefaultsKeys {
var userName: DefaultsKey<String> { .init("user_name") }
var userAge: DefaultsKey<Int> { .init("user_age") }
var isLoggedIn: DefaultsKey<Bool> { .init("is_logged_in") }
}
// Speichern
Defaults[\.userName] = "Max"
Defaults[\.userAge] = 30
Defaults[\.isLoggedIn] = true
// Lesen
let name: String = Defaults[\.userName]
let age: Int = Defaults[\.userAge]
let isLoggedIn: Bool = Defaults[\.isLoggedIn]
print("\(name) ist \(age) Jahre alt. Eingeloggt: \(isLoggedIn)")
Wie Sie sehen, ist der Code sauberer, die Typen werden zur Compile-Zeit geprüft und die Schlüssel sind an einem Ort definiert.
Wichtige Methoden und Funktionen
Sehen wir uns 10 wichtige Funktionen der Bibliothek mit Beispielen an.
1. Defaults[\.key] – Wert abrufen und setzen
Funktion: Die Hauptmethode für den Zugriff auf Werte.
Auch in der Bibliothek
OpenAI SDK für JavaScript (Node.js): Komplettguide mit Beispielen
Arbeiten mit XML in PHP: Parsen, Erstellen und Verarbeiten von Daten
Integration von Prometheus-Metriken in Java: Die Bibliothek simpleclient
Generierung von PDF-Berichten in TypeScript: Bibliotheken und Werkzeuge