Qu'est-ce que SwiftyUserDefaults et pourquoi l'utiliser ?
SwiftyUserDefaults est une bibliothèque d'encapsulation légère mais puissante pour la classe standard UserDefaults en Swift. Si vous avez déjà travaillé directement avec UserDefaults, vous savez que cela peut être fastidieux : il faut écrire beaucoup de code répétitif pour sauvegarder et récupérer des valeurs, spécifier explicitement le type de données, utiliser des clés sous forme de chaînes (ce qui expose aux fautes de frappe) et gérer les valeurs optionnelles.
SwiftyUserDefaults résout tous ces problèmes. Elle offre :
- Typage statique : le compilateur vérifie les types, éliminant les erreurs d'exécution.
- Accès global : accédez aux valeurs via la propriété pratique
Defaults. - Support des types personnalisés : sauvegardez vos propres structures et classes en implémentant le protocole
DefaultsSerializable. - Sucre syntaxique : travailler avec UserDefaults devient aussi simple que d'utiliser des propriétés classiques.
- Sécurité : plus de risque de faute de frappe dans une clé.
Cette bibliothèque est idéale pour stocker de petites quantités de données : paramètres de l'application, état de l'interface utilisateur, jetons d'authentification, etc. Elle n'est pas conçue pour stocker de gros volumes de données — pour cela, utilisez Core Data, Realm ou des fichiers.
Installation
SwiftyUserDefaults est disponible via Swift Package Manager (SPM), CocoaPods et Carthage. Voici les deux méthodes les plus courantes.
Swift Package Manager (recommandé)
- Dans Xcode, ouvrez le menu :
File → Add Packages... - Collez l'URL du dépôt :
https://github.com/sunshinejr/SwiftyUserDefaults.git - Sélectionnez la version (la dernière stable est recommandée) et cliquez sur
Add Package. - Assurez-vous que le paquet est ajouté à votre cible (target).
CocoaPods
Ajoutez ceci à votre Podfile :
target 'YourAppTarget' do
use_frameworks!
pod 'SwiftyUserDefaults', '~> 5.3'
end
Exécutez ensuite pod install.
Après l'installation, importez la bibliothèque dans le fichier souhaité :
import SwiftyUserDefaults
Démarrage rapide
Passons directement au code. Voici un scénario typique avec UserDefaults, sans puis avec SwiftyUserDefaults.
Sans SwiftyUserDefaults (approche standard)
// Sauvegarde
UserDefaults.standard.set("Jean", forKey: "user_name")
UserDefaults.standard.set(25, forKey: "user_age")
UserDefaults.standard.set(true, forKey: "is_logged_in")
// Lecture
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")
Avec SwiftyUserDefaults
// Définition des clés (dans un fichier séparé)
extension DefaultsKeys {
var userName: DefaultsKey<String> { .init("user_name") }
var userAge: DefaultsKey<Int> { .init("user_age") }
var isLoggedIn: DefaultsKey<Bool> { .init("is_logged_in") }
}
// Sauvegarde
Defaults[\.userName] = "Jean"
Defaults[\.userAge] = 25
Defaults[\.isLoggedIn] = true
// Lecture
let name: String = Defaults[\.userName]
let age: Int = Defaults[\.userAge]
let isLoggedIn: Bool = Defaults[\.isLoggedIn]
print("\(name) a \(age) ans. Connecté : \(isLoggedIn)")
Comme vous le voyez, le code est plus propre, les types sont vérifiés à la compilation, et les clés sont définies à un seul endroit.
Méthodes et fonctions principales
Découvrons 10 fonctionnalités clés de la bibliothèque avec des exemples.
1. Defaults[\.key] — obtenir et définir une valeur
Ce qu'elle fait : La méthode principale pour accéder aux valeurs.
Aussi dans la bibliothèque
Event Bus et le pattern Observer en Rust : implémentation d'une architecture événementielle
Journalisation en Kotlin : meilleures bibliothèques et outils de développement
Files d'attente de tâches pour TypeScript : Bull, Bee-Queue et traitement asynchrone
Journalisation pour TypeScript : la bibliothèque Winston