2017-09-28 12 views
0

私はappdelegateメソッドでif条件を記述しようとしています。私のアプリケーションには2つのターゲットがあります。 if条件は1つのターゲットに対してのみ有効です。特定のターゲットのif条件をアプリケーションに書き込む

#if TEST 
    var startUrl: String = "http://www.example.com" 
#elseif TEST_2 
    var startUrl: String = "http://www.example2.com" 
#endif 

TESTとTEST_2は2つのターゲットであり、選択されたターゲットに従ってURLが選択されます。これは私のアプリの開始URLです。この後に関数があります。私はその関数がTESTターゲットが実行されている場合にのみ実行する必要があります。私は何をしますか?

あなたは、このようにターゲット名を取得することができます
+3

各ターゲットにカスタムシンボルを定義できる独自のビルド設定があります。それを試しましたか? –

+1

参考:[ターゲット名の取得方法](https://stackoverflow.com/questions/18783055/how-to-get-target-name) –

+0

実際にはappdelegate.swiftファイルに関数があります。それは実行する必要があります。私はその関数の上にif条件を追加する必要があります –

答えて

1

:あなたのターゲット名をテスト

let targetName = Bundle.main.infoDictionary?["CFBundleName"] as! String 
0

は良くありません。特にこのコードが生産に向かう場合。

のは、仮定しましょう:

TESTはあなたStaggingのEnv統合) そしてTEST_2を指し、ターゲットはあなたの生産のEnvを指している対象です。

良くapprochは次のようになります。

  • オープンプレビューのターゲットのビルド設定
  • は、その後、あなたが持っているすべてをあなたのターゲットTEST

用= 1プリプロセッサのマクロのようなSTAGGINGを作成します。する:

#if STAGGING 
    var startUrl: String = "http://www.example.com" 
#els 
    var startUrl: String = "http://www.example2.com" 
#endif 
0

Y ouは、それぞれに異なる "定数"宣言を持つ2つの小さなソースファイルを作成できます。次に、該当するターゲットにのみ適切なソースファイルを含めます。

あなたも、あなたのデリゲートにif文を必要としません

// file: example1.swift (only included in target 1) 
let targetStartURL = "http://www.example1.com" 

...

// file: example2.swift (only included in target 2) 
let targetStartURL = "http://www.example2.com" 

ザ・例えば。

var startURL = targetStartURL 
関連する問題