Xcode其他Swift标志在代码

时间:2017-08-31 03:58:45

标签: swift xcode

我有一个Swift项目,我为它添加了一个单元测试目标。 我的配置文件Constants.swift包含一个结构:

struct Constants {
  struct Network {
    #if APITESTS
    static let serverURL = "https://www.servertest.com"
    #else
    static let serverURL = "https://www.server.com"
    #endif
  }
}

在我的测试目标Other Swift Flags中,我添加了-DAPITESTS 然后使用CMD + U运行单元测试 在我的测试中出现的日志中,我可以看到它是" https://www.server.com"这是在这里选择的时候应该是servertest。

如果我使用#if DEBUG而不是APITESTS,它会起作用。 如果我尝试在Active Compilation Conditions中添加APITESTS(就像DEBUG一样),它仍然无法识别。

有任何明确的解释吗?

1 个答案:

答案 0 :(得分:3)

在测试目标中定义条件时,它只影响测试;主应用程序是基于其通常的配置构建的。我在这里看到的两个简单的解决方案是在主应用程序中设置环境变量或定义一个特殊的测试配置,并设置方案以使用该配置进行测试。

enter image description here

enter image description here

enter image description here

enter image description here