在iOS中设置环境变量的位置?

时间:2012-07-20 17:18:30

标签: ios xcode variables

在我的开发中,我希望在测试时点击开发URL,但是当我在iPhone上运行应用程序时,我希望它在生产URL上运行。我如何在Xcode中设置它?

我似乎需要能够设置环境变量(在这种情况下是不同的URL)。

我在哪里设置这些?因为我很新,请把握住我的答案

由于

2 个答案:

答案 0 :(得分: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

在构建设置中,设置“开发”或“分段”或“PRODUCTION = 1”。

现在,您可以在项目的任何位置访问ROOT_URL等内容。

祝你好运!

答案 1 :(得分:-1)

如果您不想使用常量文件,还可以通过添加新的String行来设置plist文件中的不同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

在构建设置中,在“预处理器宏”部分的“调试或发布等”下添加“开发”。