5

私の開発では、テスト時に開発URLをヒットしたいのですが、アプリをiPhoneで実行する場合は、本番URLで実行したいと思います。Xcodeでこれを設定するにはどうすればよいですか?

ほとんどの場合、環境変数(この場合は異なるURL)を設定できる必要があるようです。

これらはどこに設定しますか?私はかなり新しいので、答えを手に取ってください

ありがとう

4

3 に答える 3

13

これを行う方法はたくさんあります。私の好みの方法は、次のような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などにアクセスできます。

幸運を!

于 2012-07-20T17:26:13.003 に答える
2

#define私もその方法が好きです。あまり馴染みのない人にとっては、これらはプリプロセッサディレクティブであり、コンパイラがコードを取得する前でも設定されます。

Environment variablesscheme editorプログラムの実行時に設定され、 Xcode4.x+で操作できます。さまざまなテスト環境に対応するために、さまざまなスキームを設定できます。

コード内から実行時に環境変数にアクセスするには、次を使用します。

NSString *url = @"http://standardurl.com";
NSDictionary *env = [[NSProcessInfo processInfo] environment];
NSString *overrideURL = [env valueForKey:@"url"];
if (overrideURL != nil)
  url = overrideURL;
于 2013-01-15T19:10:30.067 に答える
-1

定数ファイルを使用したくない場合は、新しい文字列行を追加して、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を追加します。

于 2012-07-20T19:56:01.547 に答える