私の開発では、テスト時に開発URLをヒットしたいのですが、アプリをiPhoneで実行する場合は、本番URLで実行したいと思います。Xcodeでこれを設定するにはどうすればよいですか?
ほとんどの場合、環境変数(この場合は異なるURL)を設定できる必要があるようです。
これらはどこに設定しますか?私はかなり新しいので、答えを手に取ってください
ありがとう
これを行う方法はたくさんあります。私の好みの方法は、次のようなConstants.hというファイルを作成することです。
//
// Constants.h
//
#ifndef Constants_h
#define Constants_h
#pragma mark - Instances
#ifdef DEVELOPMENT
#define ROOT_URL @"http://127.0.0.1:8000"
#endif
#ifdef STAGING
#define ROOT_URL @"http://staging.example.com"
#endif
#ifdef PRODUCTION
#define ROOT_URL @"http://production.example.com"
#endif
次に、次のように*-Prefix.pchファイルに含めます。
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Constants.h"
#endif
ビルド設定で、DEVELOPMENT、STAGING、またはPRODUCTION=1を設定します。
これで、プロジェクトのどこからでもROOT_URLなどにアクセスできます。
幸運を!
#define
私もその方法が好きです。あまり馴染みのない人にとっては、これらはプリプロセッサディレクティブであり、コンパイラがコードを取得する前でも設定されます。
Environment variables
scheme editor
プログラムの実行時に設定され、 Xcode4.x+で操作できます。さまざまなテスト環境に対応するために、さまざまなスキームを設定できます。
コード内から実行時に環境変数にアクセスするには、次を使用します。
NSString *url = @"http://standardurl.com";
NSDictionary *env = [[NSProcessInfo processInfo] environment];
NSString *overrideURL = [env valueForKey:@"url"];
if (overrideURL != nil)
url = overrideURL;
定数ファイルを使用したくない場合は、新しい文字列行を追加して、plistファイルにさまざまなURLを設定することもできます。
(私は認めますが、ここで得られることはあまりありませんが、URLを設定する場所によって異なります)
myApp-plistファイルに、次のような新しい行を追加します。
"DevelopmentEndpoint" "String" "http://development.endpoint.com"
"ProductionEndpoint" "String" "http://production.endpoint.com"
あなたのコードでは:
// Get endpoint from main bundle
#ifdef DEVELOPMENT
NSString *endpoint = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"DevelopmentEndpoint"];
#else
NSString *endpoint = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"ProductionEndpoint"];
#endif
ビルド設定で、デバッグまたはリリースなどの「プリプロセッサマクロ」セクションの下にDEVELOPMENTを追加します。