在应用程序中为特定目标写一个if条件

时间:2017-09-28 19:30:46

标签: ios swift xcode

我正在尝试在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目标运行时才执行该功能。我该怎么办?

3 个答案:

答案 0 :(得分:2)

你可以得到这样的目标名称:

let targetName = Bundle.main.infoDictionary?["CFBundleName"] as! String

答案 1 :(得分:1)

测试目标名称并不好。特别是如果这个代码投入生产。

让我们假设:

TEST 是指向 Stagging Env 整合)的目标 TEST_2 是指向生产环境的目标。

更好的方法是:

  • 打开预览的目标构建设置
  • 为目标TEST创建 STAGGING = 1 之类的预处理器宏

然后,您所要做的就是:

#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