Objective-C
では、静的な文字列定数を使用して代替APIキーを定義すると便利な場合がありました(たとえば、MixPanel、Flurry、Crashlyticsなどの分析パッケージのRELEASEキーとDEBUGキーを区別するため)。
#if DEBUG
static NSString *const API_KEY = @"KEY_A";
#else
static NSString *const API_KEY = @"KEY_B";
#endif
その後...
[Analytics startSession:API_KEY];
Swiftコンパイラはプリプロセッサを使用しなくなったため、これはどのようにSwiftに変換されますか?
Appleは、 Xcode 8 の時点でSwiftプリプロセッサフラグを完全にサポートしているため、「その他Swiftフラグ」でこれらの値を設定する必要はなくなりました。
新しい設定は「アクティブなコンパイル条件」と呼ばれ、プリプロセッサフラグに相当するSwiftのトップレベルのサポートを提供します。 「その他のSwift Flags」とまったく同じ方法で使用しますが、値の前に「-D」を追加する必要はありません(したがって、少しきれいになります)。
Xcode 8リリースノート から:
Active Compilation Conditions
は、Swiftコンパイラーに条件付きコンパイルフラグを渡すための新しいビルド設定です。この設定の値の各要素は、-
の要素が同じプレフィックスでclangに渡されるのと同じ方法で、Preprocessor Macros
Dが先頭に付いたswiftcに渡されます。 (22457329)
上記の設定は次のように使用します。
#if DEBUG
let accessToken = "DebugAccessToken"
#else
let accessToken = "ProductionAccessToken"
#endif