我正在尝试在appdelegate方法中编写if条件,我的应用程序中有两个目标。 if条件仅适用于一个目标。
#if TEST
var startUrl: String = "http://www.example.com"
#elseif TEST_2
var startUrl: String = "http://www.example2.com"
#endif
TEST和TEST_2是两个目标,将根据所选目标选择URL。这是我的应用的开始网址。之后有一个功能。我需要只在TEST目标运行时才执行该功能。我该怎么办?
答案 0 :(得分:2)
你可以得到这样的目标名称:
let targetName = Bundle.main.infoDictionary?["CFBundleName"] as! String
答案 1 :(得分:1)
测试目标名称并不好。特别是如果这个代码投入生产。
让我们假设:
TEST 是指向 Stagging Env (整合)的目标 TEST_2 是指向生产环境的目标。
更好的方法是:
然后,您所要做的就是:
#if STAGGING
var startUrl: String = "http://www.example.com"
#els
var startUrl: String = "http://www.example2.com"
#endif
答案 2 :(得分:0)
您可以使用不同的"常量"创建两个小的源文件。每个人的声明。然后仅在与其相关的目标中包含相应的源文件。
例如
// file: example1.swift (only included in target 1)
let targetStartURL = "http://www.example1.com"
...
// file: example2.swift (only included in target 2)
let targetStartURL = "http://www.example2.com"
你甚至不需要代表中的if语句。您只需在初始化中使用全局变量:
var startURL = targetStartURL