【发布时间】:2017-01-25 00:22:25
【问题描述】:
我想使用全局变量来根据当前的构建配置(开发、生产)定义我的应用的 API 基本路径。 这些是当前的方法:
1)
struct ApiSettings {
static let API_DEV_BASEPATH = "http://dev.myapp.com"
static let API_PRODUCTION_BASEPATH = "http://prod.myapp.com"
// Return the basepath for the current app runtime mode
static var API_BASEPATH:String {
var bPath: String!
#if DEBUG
bPath = API_DEV_BASEPATH
#else
bPath = API_PRODUCTION_BASEPATH
#endif
return bPath
}
}
2) (这里我也定义了一个暂存环境)
#if DEBUG
let API_BASEPATH = "http://dev.app.com"
#elseif STAGING
let API_BASEPATH = "http://staging.app.com"
#elseif RELEASE
let API_BASEPATH = "http://production.app.com"
#endif
但是当我尝试在我的应用程序中使用 API_BASEPATH 时,编译器会抱怨“未解析的标识符”
我不确定要采用哪种最优雅的解决方案。 PS。我正在使用 Swift3
【问题讨论】:
-
将所有与环境相关的变量提取到
plist文件中会是一个更好的设计。 -
是否有任何方法可以在 .plist 文件中定义相同的变量并根据构建配置(调试、暂存、发布)提取它而不使用代码?我正在考虑使用 .plist 提取的常量扩展答案中提供的代码
-
是的,您为每个构建配置创建一个 plist,并更改每个包中包含的一个 plist
-
好的,非常感谢。您如何看待建议的答案?
标签: ios swift global-variables preprocessor