前言
相信大家在做iOS开发的时候都碰到过这样的问题:后端有多个环境,开发测试需要连接不同的环境,上了生产又要连接生成环境,比如说开发的时候连开发环境,测试的时候连测试环境,生产连生产环境。
碰到这种情况最原始的解决方案就是需要切换环境的时候直接在改代码,这样确实能达到效果,但是会比较麻烦,持续集成也不方便。为了更优雅的解决这个问题,可以使用xcode提供的Preprocessor Macros来解决这个问题。
实际操作
首先打开xcode的PROJECT选项,选中相应的project,在info中的Configurations添加一个配置,如图所示。此时,添加了一个Test的配置。

接下来,选中对应的TARGETS,切换到Build Settings选项,并找到Preprocessor Macros,可以看到,里面多了一个Test的配置,把DEBUG=1改成Test=1。

回到代码中,我们可以用之前定义好的宏来返回不同的api环境。
#if DEBUG
NSLog(@"dev");
#elif Test
NSLog(@"test");
#else
NSLog(@"pro");
#endif
注意,如果用cocoapods来管理第三方库,需要执行Cocoapods 进行管理,需要先执行pod install --verbose,pod会自动进行相应的配置。
这样,xcode工程就支持三个环境了,运行和打包的时候只需要选择对应的环境即刻。