Qu'est-ce que SwiftyConfig ?
SwiftyConfig est une bibliothèque légère pour gérer les configurations d'applications iOS/macOS en Swift. Elle offre une interface pratique pour lire les paramètres à partir de fichiers .plist, .json ou .yaml, et prend également en charge les variables d'environnement. La bibliothèque vérifie automatiquement les types de données, prend en charge les structures imbriquées et permet de définir des valeurs par défaut.
Pourquoi utiliser SwiftyConfig ?
Lors du développement d'applications, il est souvent nécessaire de stocker les paramètres d'environnement (clés API, URL des serveurs, indicateurs de fonctionnalités) séparément du code. SwiftyConfig résout ce problème en proposant :
- Sécurité des types — le compilateur vérifie les types de configurations lors de la compilation.
- Flexibilité — prise en charge de plusieurs formats de fichiers et sources de données.
- Simplicité — un minimum de code pour l'initialisation et l'accès aux paramètres.
Installation
Ajoutez dans Package.swift :
.package(url: "https://github.com/example/SwiftyConfig.git", from: "1.0.0")Ou via CocoaPods :
pod 'SwiftyConfig'Fonctionnalités principales
- Détection automatique des configurations — recherche les fichiers
Config.plistdans le bundle. - Prise en charge des clés imbriquées — accès via la notation par points :
config["server.host"]. - Accesseurs typés —
string(forKey:),int(forKey:),bool(forKey:)et autres. - Valeurs par défaut — si la clé est absente, une valeur définie est renvoyée.
- Mise en cache — lecture unique du fichier avec mise en cache ultérieure en mémoire.
Exemple de code
import SwiftyConfig
// Initialisation (charge automatiquement Config.plist)let config = try SwiftyConfig()
// Lecture des valeurslet apiKey: String = config.string(forKey: "api.key") ?? ""let maxRetries: Int = config.int(forKey: "network.maxRetries") ?? 3let isDebugMode: Bool = config.bool(forKey: "debug.enabled") ?? false
// Ou avec la notation par pointsif let host = config["server.host"] as? String { print("Server host: \\(host)")}
// Pour macOS, on peut ajouter la prise en charge des variables d'environnement :let envConfig = SwiftyConfig(environment: ProcessInfo.processInfo.environment)print(envConfig.string(forKey: "DATABASE_URL") ?? "default")Quand utiliser SwiftyConfig ?
La bibliothèque est idéale pour :
- Applications multi-environnements — dev/staging/prod avec différentes configurations.
- Feature toggles — activation/désactivation rapide de fonctionnalités sans recompilation.
- Compilations pour plusieurs cibles — iOS, macOS, watchOS avec des paramètres communs.
- Projets open-source — où il faut masquer les clés réelles et les placer dans un fichier séparé.
SwiftyConfig est une solution minimaliste mais puissante pour configurer les applications Swift, qui simplifie la maintenance et la mise à l'échelle du code.