使用Swift区分两个Xcode目标

如何用Swift区分两个Xcode目标? 我们的想法是在Xcode中使用相同的代码库制作免费和付费版本的应用程序。

使用目标CI可以使用预处理器宏,但使用Swift则不可用。

在Xcode中,进入目标的构建配置。 找到名为Swift Compiler – Custom Flags的部分 ,其中包含一个名为Other Swift Flags的设置。

为编译器添加一个命令行标志来添加一个标志,就像你使用C编译器一样。

Swift编译器标志

现在你已经将-D Something传递给了Swift编译器。 在Swift代码中,您现在可以执行以下操作:

 #if Something let foo = "bar" #endif 

它看起来很像C预处理器,但与C不同,所有条件部分中的所有代码都必须在语法上正确,否则程序将无法编译。 因此,您可以在构建设置中的每个目标上设置一个标志,并在代码中使用它们。

从Xcode 8开始,您可以在Active Compilation Conditions下的每个目标的Build Settings中设置编译条件

活动编译条件截图

有了这些设置,您可以使用:

 #if FREE //do something #endif 

有关更多详细信息,请参阅i40west的答案和评论。