1. ホーム
  2. swift

[解決済み] Swift: PREPROCESSORフラグ(`#if DEBUG`など)を使ってAPIキーを実装する方法とは?

2022-05-13 22:15:08

質問

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 は、Swift プリプロセッサ フラグの完全なサポートを Xcode 8 そのため、"Other Swift Flags" でこれらの値を設定する必要はもはやありません。

新しい設定は "Active Compilation Conditions" と呼ばれ、プリプロセッサーフラグの Swift 相当のトップレベルのサポートを提供します。値を "-D" で前置する必要がないこと以外は、"Other Swift Flags" と全く同じ方法でこれを使用します (したがって、少しすっきりしています)。

から Xcode 8 リリース ノート :

<ブロッククオート

Active Compilation Conditions は、Swift コンパイラに条件付きコンパイルフラグを渡すための新しいビルド設定です。この設定の値の各要素は、swiftc にプレフィックスとして -D の要素と同じように Preprocessor Macros の要素が同じ接頭辞で clang に渡されるのと同じです。(22457329)

上記の設定をこのように使うのです。

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