Configuration des applications Swift (iOS/macOS) : bonnes pratiques et outils

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Configuration des applications Swift (iOS/macOS) : aperçu des outils et bibliothèques



La configuration des applications est l’un des aspects clés du développement sous iOS et macOS. La flexibilité, la testabilité et la sécurité de votre produit dépendent d’une bonne gestion des paramètres. Dans cet article, nous examinerons les mécanismes de configuration standard en Swift, ainsi que les bibliothèques et outils populaires qui simplifient la gestion des paramètres de l’application.



Mécanismes de configuration intégrés en Swift



1. Info.plist et Xcconfig

Le moyen de base pour stocker les métadonnées de l’application est le fichier Info.plist. Il contient la version du bundle, l’identifiant, le nom de l’application et d’autres paramètres système. Pour une gestion plus flexible de la configuration (par exemple, des valeurs différentes pour Debug/Release), on utilise les fichiers .xcconfig.



// Example.xcconfigAPP_NAME = MyAppAPI_BASE_URL = https://api.example.comBUNDLE_ID_SUFFIX = .dev


En Swift, ces valeurs peuvent être obtenues via Bundle.main :



func getConfigValue(key: String) -> String? {    guard let value = Bundle.main.object(forInfoDictionaryKey: key) as? String else {        return nil    }    return value}

let baseURL = getConfigValue(key: "API_BASE_URL")


2. UserDefaults

Pour stocker les préférences utilisateur (thème, langue, taille de police), on utilise UserDefaults. C’est un moyen simple et rapide de sauvegarder de petites quantités de données.



// SauvegardeUserDefaults.standard.set(true, forKey: "isDarkMode")UserDefaults.standard.set("ru", forKey: "language")

// Lecturelet isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode")let language = UserDefaults.standard.string(forKey: "language") ?? "en"


3. SwiftUI AppStorage

Dans SwiftUI, il existe un property wrapper intégré @AppStorage qui se synchronise automatiquement avec UserDefaults :



struct SettingsView: View {    @AppStorage("isDarkMode") private var isDarkMode = false    @AppStorage("fontSize") private var fontSize = 14.0

var body: some View { Form { Toggle("Thème sombre", isOn: $isDarkMode) Slider(value: $fontSize, in: 10...30) { Text("Taille de police") } } }}


Bibliothèques tierces pour la configuration



Bien que les outils standard couvrent les scénarios de base, les projets réels nécessitent souvent des solutions plus avancées. Examinons quelques bibliothèques populaires.



1. SwiftyUserDefaults

Une surcouche de UserDefaults avec des clés typées et la prise en charge de Codable. Elle permet d’éviter les erreurs liées aux clés sous forme de chaînes de caractères.



  • Prise en charge de tous les types standard et de Codable
  • Génération de code via Sourcery (optionnel)
  • Syntaxe simple et concise


import SwiftyUserDefaults

extension DefaultsKeys { var isDarkMode: DefaultsKey<Bool> { .init("isDarkMode", defaultValue: false) } var userName: DefaultsKey<String?> { .init("userName") }}

// UtilisationDefaults[\\.isDarkMode] = truelet name = Defaults[\\.userName] ?? "Invité"


2. PropertyKit

Bibliothèque pour la description déclarative de la configuration. Elle permet de regrouper les paramètres et de gérer leur visibilité.



  • Prise en charge des sections et des groupes imbriqués
  • Validation des valeurs à la volée
  • Intégration avec Combine pour la mise à jour réactive de l’interface utilisateur


import PropertyKit

struct AppConfig: PropertyGroup { @Property(key: "api_url", default: "https://api.example.com") var apiURL: String

@Property(key: "max_retries", default: 3, validator: { $0 > 0 && $0 < 10 }) var maxRetries: Int

@Property(key: "feature_x_enabled", default: false) var featureXEnabled: Bool

Recommendations