###前提・実現したいこと
はじめまして。
僕は普段AndroidやWindows Forms相手のお仕事をしている者ですが、このほど「数年前に書かれたiOSアプリ改修」のお仕事をやることになりました。
既存アプリの改修ということでソースを眺めていたのですが、定数を定義している箇所の構造を見て驚愕しました。
###該当のソースコード
Obj-Cに不慣れなためJavaで書かせていただきますが、件の箇所の構造はだいたいこんな感じです。
Java
1 2package net.formula97.WonderInplementation; 3 4public class StupidConstants { 5 6 private String mHost; 7 private String mContextRoot; 8 9 // TODO: リリース時に変更のこと 10 private boolean isDebug = true; 11 12 public StupidConstants() { 13 if (isDebug) { 14 // TODO: 結合テスト時はサーバ設定を変更のこと 15 this.mHost = "192.168.1.100"; // 開発用サーバ 16 //this.mHost = "192.168.1.110"; // 結合テスト評価サーバ 17 this.mContextRoot = "debugRoot"; 18 } false { 19 // TODO: 受入れテスト時はサーバ設定を変更すること 20 this.mhost = "10.1.0.100"; // 受け入れテストサーバ 21 //this.mhost = "honban.host.tld"; // 本番環境 22 this.mContextRoot = "releaseRoot"; 23 } 24 } 25 26 // Getter省略 27}
###実現したいこと
ごらんのとおり、結合テストやリリースの際に接続するサーバが異なるのですが、それぞれのフェーズ用のアプリを作るたびに手作業で接続先等を書き換えていたようです。
こんなことをしていると、いつかリリース手順を間違ってしまうことは火を見るより明らかなので、コンパイラから指定した定数に従い処理を分岐させるようなことを行いたいのですが、Xcodeでの実現方法がわからず困っています。
Gradleプロジェクトの場合は、Product Flavourを定義することで実現できることはわかっていますが、Xcodeではどうしたらよいか、ご教示いただきたく。
###補足情報(言語/FW/ツール等のバージョンなど)
現在使用している開発環境は以下のとおりです。
- Mac OS X El Capitan
- Xcode 6.1.1(もともとはXcode 3.2で作成された)
- プロジェクトのDeployment targetはiOS 4.3
なお、接続先サーバ等を入力しておく設定画面を用意すれば事足りることはわかっていますが、設定画面の追加等がどういうわけか要件として盛り込まれておらず、手が出せません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。