7

RESTful リクエストを行う iOS アプリケーションがあります。Web サービス RESTful リクエストを . 開発サーバー b. ステージング サーバー c. 本番サーバー

例えば、

a. dev url: http://www.dev.camerakingphotos/getAllPhotos
b. test url: http://www.test.camerakingphotos/getAllPhotos
c. production url: http://www.camerkingphotos/getAllPhotos
  1. URL を本番サーバーと開発サーバーに簡単に切り替えるように XCode に指示するにはどうすればよいですか? ビルド設定、プリプロセッサ マクロ、スキーム、または新しいターゲットですか (新しいターゲットは私が望んでいるものではないと思います)。理想的には、XCode は、現在アプリの開発バージョンをテストしていることを認識しているので、すべての URL が開発サーバーを指すようにします。そして、本番環境を指すようにアプリをテストする準備ができたことを XCode に伝えたいので、本番環境サーバーに対応する URL を使用します。

  2. プリプロセッサ マクロを定義するとしたら、どこで定義しますか? すべてのサービス URL が保存される単一の場所である APP_CONSTANTS.h ファイルがあります。APP_CONSTANTS.h ファイルまたは Prefix.pch ファイルでプリプロセッサ マクロを定義しますか?

  3. 誰かが私のために詳細な例を詳しく説明してくれませんか?

私はstackoverflowを見回しましたが、あまりにも多くの事前知識を前提としない、明示的に私のためにすべてのピースをまとめてくれる人に感謝します。私は XCode ビルド ガイド (そのほとんど) を熟読しましたが、森ではなく木しか見えませんでした。

ありがとう!

4

1 に答える 1

9

Xcode はこれとは (ほとんど) 関係がありません。コンパイラに知らせたい場合は、それを伝える必要があります。コンパイラは、あなたが何を伝えたかだけを知っています。私もこの設定です。それらを切り替えるには、プリプロセッサ マクロを使用します。デフォルトでは、Xcode はDEBUG、アプリの開発ビルドを作成するときに設定されるプリプロセッサ フラグを定義します。リリース スキームでは定義されていません。これは、2 つのサーバーを切り替える最も簡単な方法です。

.h ファイル

extern NSString *const MYServerURL;

.m ファイル

#ifdef DEBUG
NSString *const MYServerURL = @"http://www.dev.camerakingphotos/getAllPhotos";
#else
NSString *const MYServerURL = @"http://www.camerakingphotos/getAllPhotos";
#endif

私はこれらをしなかったことに注意してください#define。これには、.m ファイルを変更した場合にのみ再コンパイルする必要があるというボーナスがあります (ヘッダーを含むすべてのファイルを再コンパイルする必要がある前者とは対照的です)。これらの変数は、変数が定義されているヘッダーを含むすべてのファイルでグローバルに使用できます。より細かい制御が必要な場合は、.pch ファイルで独自のプリプロセッサ項目を定義し、必要に応じて (コメントを使用して) オンまたはオフにすることができます。次に、アイテムを使用する代わりに上記のパターンをDEBUG使用します (ただし、リリースする前に適切な値に切り替えることを忘れないでください)。

于 2013-07-19T03:56:21.967 に答える