Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Xcode for iOS项目中,哪一个是多环境设置的最佳实践?_Ios_Xcode - Fatal编程技术网

在Xcode for iOS项目中,哪一个是多环境设置的最佳实践?

在Xcode for iOS项目中,哪一个是多环境设置的最佳实践?,ios,xcode,Ios,Xcode,到目前为止,我知道有几种解决方案可用于多种环境设置 :为不同的环境准备不同的plist文件。然后,使用添加运行脚本构建阶段复制特定plist文件以覆盖项目plist文件 解决方案2:在项目->信息->配置中,复制现有配置。设置方案->信息->构建配置。然后,在目标->构建设置中,添加用户定义的设置 $(kBaseURL) 解决方案3:在项目->生成设置中添加预处理器宏以定义环境。然后,在源代码中编写宏来切换环境设置值 #ifdef DEBUG_ENV #define kBaseURL @"ht

到目前为止,我知道有几种解决方案可用于多种环境设置

:为不同的环境准备不同的plist文件。然后,使用添加运行脚本构建阶段复制特定plist文件以覆盖项目plist文件

解决方案2:在项目->信息->配置中,复制现有配置。设置方案->信息->构建配置。然后,在目标->构建设置中,添加用户定义的设置

$(kBaseURL)
解决方案3:在项目->生成设置中添加预处理器宏以定义环境。然后,在源代码中编写宏来切换环境设置值

#ifdef DEBUG_ENV
#define kBaseURL @"http://debug-server.a.com/api/"
#else
#define kBaseURL @"http://production-server.a.com/api/"
#endif
还有其他几种切换环境设置的方法

$(kBaseURL)

哪种方法是最好的做法?

我认为这也是一个品味问题,也是一个你真正想要达到的目标的问题

例如,您可能希望调试配置不与internet通信,而是使用HTTP存根模拟请求。简单地复制plist是不可能的


就个人而言我更喜欢为每个环境创建构建配置,然后为切换预编译器宏的每个配置设置编译器标志。我还想采取一些更复杂的步骤来修改所有配置的bundle id和app name,然后为每个配置创建一个构建方案。这使得我能够从Xcode构建所有环境,并在同一设备上安装所有应用程序,因为捆绑包ID不同。不过设置起来有点棘手。然而,一旦它运行起来:非常适合我的用例:)

最佳方式?为了什么?除非您指定条件,否则基本上没有“最好”的东西。@SamiKuhmonen那么,您能告诉我如何切换环境设置吗?