Fichier de constantes globales en Swift : tout ce que vous vouliez savoir sans jamais oser le demander

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

Pourquoi un fichier de constantes globales en Swift ?

\n\n

Chaque développeur iOS a rencontré au moins une fois dans sa vie une situation où les mêmes valeurs — URL du serveur, clés API, identifiants de cellules, marges — sont dispersées dans tout le projet. Et voilà que le chef dit : « Change l’URL de base ». Vous ouvrez le projet, et la quête commence : trouver toutes les occurrences de "https://old.api.com" et les remplacer par la nouvelle. Cela vous dit quelque chose ?

\n\n

C’est exactement pour cela qu’un fichier de constantes globales en Swift est nécessaire — un endroit unique où sont stockés tous les « nombres magiques » et chaînes de caractères. Dans cet article, nous analyserons les questions les plus fréquentes de Stack Overflow (le sujet a des milliers de vues !) et donnerons des réponses claires avec des exemples de code. C’est parti !

\n\n

Question 1 : Comment créer un simple fichier de constantes en Swift ?

\n\n

La méthode la plus directe est d’utiliser une struct avec des propriétés statiques. Pourquoi une struct plutôt qu’un class ? Parce que les structures sont des types de valeur, elles sont plus légères et ne nécessitent pas d’initialiseur.

\n\n
// Constants.swift\nimport Foundation\n\nstruct AppConstants {\n    static let baseURL = "https://api.myapp.com/v1"\n    static let apiKey = "your-secret-key-here"\n    static let defaultTimeout: TimeInterval = 30.0\n    static let maxRetryCount = 3\n}
\n\n

Utilisation simple : AppConstants.baseURL. Voilà, plus de chaînes magiques. Les constantes Swift avec let garantissent que la valeur ne sera pas modifiée accidentellement.

\n\n

Pourquoi ne pas utiliser des variables globales ?

\n\n

On pourrait bien sûr écrire :

\n\n
let baseURL = "https://api.myapp.com/v1"
\n\n

Mais c’est un fichier de constantes globales en Swift dans sa forme la plus primitive. Problème : pas d’espace de noms. Si vous avez 50 constantes, vous vous perdrez rapidement sur laquelle correspond à quoi. La struct résout ce problème élégamment.

\n\n

Question 2 : Enum ou Struct — que choisir pour les constantes ?

\n\n

Sur Stack Overflow, les débats sont animés. Analysons les deux approches.

\n\n

Struct (option populaire)

\n\n
struct UIConstants {\n    static let cornerRadius: CGFloat = 12.0\n    static let defaultPadding: CGFloat = 16.0\n    static let animationDuration: Double = 0.3\n}
\n\n

Avantages : familier, on peut créer des instances (bien que généralement inutile), facile à étendre via extension.

\n\n

Inconvénients : techniquement, on peut écrire UIConstants(), ce qui n’a pas de sens.

\n\n

Enum (option plus stricte)

\n\n
enum NetworkConstants {\n    static let baseURL = "https://api.myapp.com/v1"\n    static let apiVersion = "2.0"\n    static let defaultHeaders: [String: String] = [\n        "Content-Type": "application/json"\n    ]\n}
\n\n

Avantages : impossible de créer une instance — le compilateur ne le permettra pas. Espace de noms pur. Idéal pour les constantes enum Swift.

\n\n

Inconvénients : certains considèrent cela comme un « hack » — utiliser enum en dehors de son usage prévu.

\n\n

Mon verdict : si vous voulez être un développeur « correct » et vous protéger contre la création accidentelle d’instance — utilisez enum. Si vous travaillez en équipe où tout le monde est habitué à struct — utilisez struct. Les deux options sont valides.

\n\n

Question 3 : Comment organiser les constantes par catégories ?

\n\n

Quand le projet grandit, un seul fichier devient un dépotoir. Solution : structures imbriquées ou fichiers séparés pour chaque catégorie.

\n\n

Option A : Structures imbriquées (dans un seul fichier)

\n\n
struct Constants {\n    struct Network {\n        static let baseURL = "https://api.myapp.com"\n        static let timeout: TimeInterval = 30\n    }\n    \n    struct UI {\n        static let cornerRadius: CGFloat = 8\n        static let buttonHeight: CGFloat = 44\n    }\n    \n    struct Storage {\n        static let userDefaultsKey = "com.myapp.user"\n        static let maxCacheSize =                

Blogs

Book Recommendations