我正在做一个项目,其中我们有两个不同的应用程序版本作为不同的目标进行处理,这两个应用程序非常相似,但它们在某些具有不同元素的屏幕上有所不同。因此,我们正在检索应用程序捆绑标识符并将其与硬编码字符串进行比较以确定流,我需要帮助找到一种方法来避免对用于与捆绑标识符进行比较的字符串使用硬编码值。
以下是我们检索捆绑标识符的方式:
var appName: String { return stringValue(for: kCFBundleNameKey) }
这就是我们获得目标的方式:
var currentTarget: Target {
return appName == "AppNumber1" ? .appnumber1 : .appnumber2
}
目标是具有 2 种情况的枚举:
enum Target {
case appnumber1
case appnumber2
}
因此,我想做的是避免使用硬编码字符串"AppNumber1"与捆绑标识符进行比较。还有其他选择吗?
如果使用 Xcode 10.3,则可以为每个目标定义唯一的Active Compilation Condition
(APPNUMBER1
、APPNUMBER2
(,然后可以在代码中签入当前正在运行的目标。下面显示了一个示例。
#if APPNUMBER1
//Code for "AppNumber1"
#elseif APPNUMBER2
//Code for "AppNumber2"
#endif