2016-01-06 28 views
1

我的项目中使用,有一个目标,有三种配置:环境变量的代码的Xcode斯威夫特

调试,UAT,释放

我有使用这些配置对于建设四座共享方案/运行/测试/资料/分析/归档。

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

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

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

我已经看过了。

1)斯威夫特编译器>自定义标记(矿目前$(继承) “-D” “的CocoaPods”)

2)NSProcessInfo.processInfo()环境

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

基本上,我不清楚这是做这件事的最好方法。

谢谢你的帮助。

回答

2

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

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

+0

感谢您ÿ我们的回复。我为这个指南中的每个不同环境创建了三个新的configuration.plist文件:http://appfoundry.be/blog/2014/07/04/Xcode-Env-Configuration/ 我已经添加了建立阶段。 现在,这些plist文件目前是空的。每个plist文件是否需要完整,还是添加到info.plist?如果这些plist文件中唯一的东西是唯一的环境变量(其余的URL),它会起作用吗? 谢谢 –

+0

他们必须是完整的,或者你可以创建一个新的plist(不是标准的info.plist),然后通过配置类或其他方法引用它。如果你使用后者,你只需要复制每个plist文件中不同的条目。它取决于你真的。我通过info.plist复制所有内容,因为我对每个环境都做了很多改变。 – tskulbru

+0

这个完美的作品。谢谢。 –

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/

+0

也是一个很好的方法! – tskulbru