117 votes

Swift: comment utiliser les drapeaux PREPROCESSOR (comme `#if DEBUG`) pour implémenter les clés API?

Dans Objective-C il était parfois utile d'utiliser des constantes de chaîne statiques pour définir des clés d'API alternatives (par exemple, pour différencier les clés RELEASE et DEBUG des packages d'analyse, tels que MixPanel, Flurry ou Crashlytics):

 #if DEBUG
static NSString *const API_KEY = @"KEY_A";
#else
static NSString *const API_KEY = @"KEY_B";
#endif
 

et alors...

 [Analytics startSession:API_KEY];
 

Comment cela se traduit-il en Swift, puisque le compilateur Swift n’utilise plus de pré-processeur?

190voto

Dan Points 1417

Apple a intégré un support complet pour Swift préprocesseur drapeaux de Xcode 8, de sorte qu'il n'est plus nécessaire de définir ces valeurs dans la section "Autres Swift Drapeaux".

Le nouveau paramètre est appelé "Active Compilation Conditions", qui fournit un haut niveau de soutien pour la Swift équivalent de préprocesseur drapeaux. Vous utilisez exactement de la même manière que vous le feriez "Autres Swift Drapeaux", sauf qu'il n'y pas besoin d'ajouter de la valeur avec un "D" (c'est donc juste un peu plus propre).

À partir de l' Xcode 8 notes de version:

Active Compilation Conditions est un nouveau paramètre de construction pour le passage des drapeaux de compilation conditionnelle à la Swift compilateur. Chaque élément de la valeur de ce paramètre passe à swiftc avec le préfixe -D, de la même manière que les éléments de la Preprocessor Macros passer à clang avec le même préfixe. (22457329)

enter image description here

Vous utilisez le paramètre ci-dessus comme suit:

#if DEBUG
    let accessToken = "DebugAccessToken"
#else
    let accessToken = "ProductionAccessToken"
#endif

134voto

richarddas Points 889

Mise à JOUR: Xcode 8 prend désormais en charge automatiquement, voir @DanLoewenherz la réponse ci-dessus.

Avant Xcode 8, vous pouvez toujours utiliser les Macros de la même façon:

#if DEBUG
let apiKey = "KEY_A"
#else
let apiKey = "KEY_B"
#endif

Toutefois, dans le but pour eux d'être ramassé par Swift, il vous faut installer l'Autre Swift Drapeaux" dans votre objectif est de Construire des Paramètres:

  • Ouvrir les Paramètres de construction pour votre cible
  • Recherche pour "les autres swift drapeaux"
  • Ajouter les macros que vous souhaitez utiliser, précédée par l' -D drapeau

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X