代码中无法识别 Xcode 其他 Swift 标志

Mik*_*ael 6 xcode swift

我有一个 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
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的测试目标中,Other Swift Flags我添加了 -DAPITESTS 然后使用 CMD+U 运行单元测试在我的测试中存在的日志中,我可以看到它是“ https://www.server.com ”,它应该是 servertest .

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

有明确的解释吗?

Kev*_*vin 6

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

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明