0

私は、IOS 開発にやや慣れていないため、アプリのビルド スキームに応じて環境変数を管理する最善の方法を見つけたいと考えていました。

DEBUGビルドを実行する場合、アプリがサーバーからすべてのデータを取得するようにします

http://debugserver1.blah.com

同様に、テストビルドを実行する場合、アプリがサーバーからすべてのデータを取得するようにします。

http://testserver2.blah.com

そして本番用

http://prodserver.blah.com

これは珍しいシナリオであると確信しており、これにアプローチするための最良の方法は何かを理解しようとしています. 私は環境変数を調べましたが、それは意味がないと思うので、pLists に頼っています。

特定の pList を特定のスキーム ビルドに関連付けるのを手伝ってくれませんか?

4

2 に答える 2

0

これは非常に一般的なシナリオであり、簡単に処理できます。デフォルトでは、新しいプロジェクトを作成するときDEBUG#definedデバッグビルド構成用ですが、リリース構成用ではありません。テスト構成では、おそらくDebug#defineをコピーしてforを追加しますTEST

おそらく、API 呼び出しを処理するマネージャー クラスを作成し、プロパティを追加するというルートをたどるでしょう。

@property (nonatomic, strong) NSString * baseURLString;

次に、クラスの init メソッドで:

#if defined(DEBUG)
self.baseURLString = "http://debugserver1.blah.com";
#elif defined(TEST) 
self.baseURLString = "http://testserver1.blah.com";
#else
self.baseURLString = "http://prodserver1.blah.com";
#endif

次に、 を使用しbaseURLStringて URL を作成し、API 呼び出しを行います。

于 2012-05-12T20:39:13.717 に答える
0

#includeこれを行うには、各ソース ファイルに含まれる定義ファイルを使用します。例えば:

サーバー名.h

#define DEBUG_BUILD
//#define TEST_BUILD
//#define PRODUCTION_BUILD

#if defined(DEBUG_BUILD)
    #define SERVER_NAME "http://debugserver1.blah.com"
#elif defined(TEST_BUILD)
    #define SERVER_NAME "http://testserver2.blah.com"
#elif defined(PRODUCTION_BUILD)
    #define SERVER_NAME "http://prodserver.blah.com"
#else
    #error Must define build type
#endif

次に、 を使用する必要がある各ソース ファイルSERVER_NAMEの上部で次の操作を行います。

#include "servername.h"

上記は機能しますがservername.h、ビルドタイプを変更するには編集する必要があります。#defineより良い方法は、ステートメントを から削除しservername.h、Xcode のビルド設定を使用してビルド タイプを定義することです。これを行うには、[ビルド設定] に移動し、[前処理] セクションが見つかるまで下にスクロールします。デフォルトのプロジェクトは次のようになります。

ここに画像の説明を入力

そのセクションでは、ビルドの種類ごとに、必要に応じて、、、またはを追加DEBUG_BUILDできTEST_BUILDますPRODUCTION_BUILD

于 2012-05-12T20:27:37.397 に答える