ios - Xcode Swift 代码中使用的不同方案中的环境变量

标签 ios swift swift2

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

调试、UAT、发布

我有四个共享方案,它们使用这些配置进行构建/运行/测试/配置文件/分析/存档。

在我的应用程序中,每个方案都有不同的捆绑 ID。这很容易更改,我在每个配置的产品包标识符中进行了更改。

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

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

我看过:

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

2) NSProcessInfo.processInfo().environment

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

基本上,我不清楚哪种方法是最好的方法。

感谢您的帮助。

最佳答案

我通常更喜欢这个:

我在不同的 .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/

关于ios - Xcode Swift 代码中使用的不同方案中的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638515/

相关文章:

ios - Swift - 带有 Objective-C 选择器 '*()' 的方法 '*' 与具有相同 Objective-C 选择器的父类(super class) '*' 的 'UIView' 的 getter 冲突

ios - iOS 版 Crashlytics 仅在崩溃后打开应用程序时才记录崩溃

ios - AFHTTPSessionManager 子类 swift

ios - applicationDidBecomeActive 保持登录状态,类似于 instagram

ios - UITableView 分页 - 底部刷新以在 Swift 中加载新数据

ios - Firebase(url :"")功能不起作用

ios - 同步 API 请求到异步 API 请求 Swift 2.2

objective-c - 核心数据 mergeChangesFromContextDidSaveNotification 不起作用

ios - 如何本地化静态 UIApplicationShortcutItems?

ios - 谷歌地图 GMSMarker 改变相机焦点 iOS