Dans de nombreuses situations, vous n'avez pas vraiment besoin du conditionnel. compilation ; vous avez juste besoin du conditionnel comportement que vous pouvez allumer et éteindre. Pour cela, vous pouvez utiliser une variable d'environnement. Cela présente l'énorme avantage de ne pas avoir à recompiler.
Vous pouvez définir la variable d'environnement, et l'activer ou la désactiver facilement, dans l'éditeur de schéma :
Vous pouvez récupérer la variable d'environnement avec NSProcessInfo :
let dic = NSProcessInfo.processInfo().environment
if dic["TRIPLE"] != nil {
// ... do secret stuff here ...
}
Voici un exemple concret. Mon application ne fonctionne que sur l'appareil, car elle utilise la bibliothèque musicale, qui n'existe pas sur le simulateur. Comment, alors, faire des captures d'écran sur le simulateur pour des appareils que je ne possède pas ? Sans ces captures d'écran, je ne peux pas soumettre mon application à l'AppStore.
J'ai besoin données fausses et un une manière différente de le traiter . J'ai deux variables d'environnement : l'une qui, lorsqu'elle est activée, indique à l'application de générer les données factices à partir des données réelles lors de l'exécution sur mon appareil ; l'autre qui, lorsqu'elle est activée, utilise les données factices (sans la bibliothèque musicale manquante) lors de l'exécution sur le simulateur. L'activation et la désactivation de chacun de ces modes spéciaux sont faciles grâce aux cases à cocher des variables d'environnement dans l'éditeur de schémas. Et le bonus est que je ne peux pas les utiliser accidentellement dans ma construction App Store, parce que l'archivage n'a pas de variables d'environnement.
1 votes
Comme idée, vous pourriez mettre ceci dans vos en-têtes de pontage obj-c..
60 votes
Vous devriez vraiment attribuer une réponse car vous avez le choix entre plusieurs réponses et cette question vous a valu beaucoup de votes positifs.
0 votes
@Userthatisnotauser vous avez totalement manqué le point. Vous posez une question, vous obtenez de bonnes réponses - choisissez-en une. N'ignorez pas le temps et l'effort.
1 votes
@DavidH Non, en fait c'est l'inverse. Mon commentaire était juste une référence à Hitchhiker's sur 42. Je suis tout à fait d'accord, et je veux upvoter, mais je ne peux pas me résoudre à faire le 43.
1 votes
@Userthatisnotauser le poster a 19k points - les gens ont voté ses réponses mais il ne semble pas se soucier des gens qui l'aident. Je choisis toujours une réponse.
0 votes
Vérifiez leur compte, il est mort.