[解決済み] 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
関連
-
Swift の Optional 値 && Optional のアンラップ時に予期せず nil が検出された場合の説明
-
[解決済み】Swift 4でStringのsubstringを使うには?'substring(to:)'は非推奨です。部分的な範囲から'演算子を持つ文字列スライス添字を使用してください。
-
[解決済み】SwiftでTimer(旧NSTimer)を使用するにはどうすればよいですか?
-
[解決済み】String.substringWithRangeはどのように使うのですか?(または、SwiftでRangeはどのように動作しますか?)
-
[解決済み】Swiftで更新するためにプルを使用するには?
-
[解決済み] Swiftの使い方 @autoclosure
-
[解決済み] ""内の二重引用符を印刷するには?
-
[解決済み] Swift: PREPROCESSORフラグ(`#if DEBUG`など)を使ってAPIキーを実装する方法とは?
-
[解決済み] Swift: インデックスで文字列配列を置換する
-
[解決済み] Swift - 複数条件でオブジェクトの配列を並べ替える
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Swiftがエラーを報告。アボートトラップ:6
-
Swift Error fatal error: Optional value のアンラップ中に予期せず nil を発見した。
-
Swift の Optional 値 && Optional のアンラップ時に予期せず nil が検出された場合の説明
-
swift 4.0でのdispatch_async,dispatch_afterの使用について
-
[解決済み】DEBUG/RELEASEビルドでコードが実行されているかどうかを判断する方法は?
-
[解決済み] ""内の二重引用符を印刷するには?
-
[解決済み] Swiftで範囲を作成する方法は?
-
[解決済み] Swift: PREPROCESSORフラグ(`#if DEBUG`など)を使ってAPIキーを実装する方法とは?
-
[解決済み] Swift - 複数条件でオブジェクトの配列を並べ替える
-
[解決済み] swiftにおける "precondition "と "assert "の違いとは?