Swift:多目标处理:宏不起作用

Swift: Multiple targets handling: macros not working

来自参考 and https://www.appcoda.com/using-xcode-targets/

我创建了三个目标,每个目标都有不同的包 ID 和应用程序图标。我还在 "Other swift flags" - > 自定义 swift 标志部分

添加了不同的标志

喜欢

对于我添加的第一个目标 "-DGOLD" , 对于第二个目标,我添加了 "-DSILVER" 和 我添加的第三个目标 "-DPLATINUM"

在AppDelegate中我写了一段代码

#if GOLD
print ("Gold")
#elseif SILVER
print ("Silver")
#else
print ("Platinum")
#endif

仅供参考,I am using Xcode 8.3

我试图运行第一个目标,我总是得到"Platinum"。请告诉我如何正确获取标志

对于 Xcode 8 及更高版本,使用 Active Compilation Conditions Build settings / Swift compiler - Custom flags 中的设置。

这是用于将条件编译标志传递给 Swift 编译器的新构建设置。 只需添加这样的标志:GOLDSILVER 等,无需 -D 等。 然后用这样的编译条件检查它:

#if GOLD
//
#elseif SILVER
//
#else
//
#endif

我正在与 Xcode 9 合作。 我遇到了同样的问题,花了几个小时寻找答案,终于找到了解决方案。 在每个目标中,Build Settings -> Other Swift Flags,我添加了这样的想要的标志:

目标 1 -> -DTARGET1

目标 2 -> -DTARGET2

然后在我的代码中使用:

#if TARGET1
//
#elseif TARGET2
//
#endif