用于代码Xcode Swift的不同方案中的环境变量

时间:2016-01-06 16:57:53

标签: ios swift swift2

我的项目有一个目标,有三个配置:

Debug,UAT,Release

我有四个共享方案,将这些配置用于build / run / test / profile / analyze / archive。

在我的应用中,每个方案都有不同的捆绑ID。这很容易改变,我在每个配置的Product Bundle Identifier中都这样做了。

但是,我希望每个方案都连接到不同的REST API。 (dev.example.com/api等)

为每个环境设置变量然后在我的应用程序中使用它的最佳方法是什么?

我看过:

1)Swift编译器>自定义标志(我的目前是$(继承)" -D"" COCOAPODS")

2)NSProcessInfo.processInfo()。environment

3)为每个环境添加Configuration.plist文件

基本上,我不清楚哪种方式最好。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

就个人而言,我为每个方案使用不同的.plist文件。我首先尝试了自定义标志方法,但随着应用程序的增长,我需要越来越多基于方案的配置,而且事情变得混乱。

不同的.plist文件至少为我的项目创造了奇迹。

答案 1 :(得分:2)

我通常更喜欢这个:

我在不同的.xcconfig文件中定义常量,然后我将它们用于一个plist文件中的键。

假设您在debug.xcconfig

中有这个
<pre>
BASEURL = api.dev.com/api/"
</pre> 

然后,在你的plist中,你需要添加一个键baseUrl = http://${BASEURL}

然后,在代码中,您将使用它来访问它 NSBundle.mainBundle().infoDictionary?["baseUrl"]

如果您想了解有关xcconfig的更多信息,请参阅此文章:http://www.jontolof.com/cocoa/using-xcconfig-files-for-you-xcode-project/