2014-12-03 71 views
8

如何區分使用Swift的兩個Xcode目標?這個想法是在Xcode中使用相同的代碼庫製作免費和付費版本的應用程序。使用Swift區分兩個Xcode目標

使用目標C我可以使用預處理器宏,但使用Swift則不可用。

回答

0

由於Xcode中8,你可以在活動編輯條件設置爲每個目標生成設置編譯條件。

Active Compilation Conditions Screenshot

有了這些設置,您可以使用:

#if FREE 
    //do something 
#endif 

欲瞭解更多詳情,請參閱該i40west answer和評論。

20

在Xcode中,進入目標的構建配置。查找名爲的部分Swift編譯器 - 自定義標誌,其中包含一個名爲的其他Swift Flags的設置。

爲編譯器添加一個命令行標誌來添加一個標誌,就像你用C編譯器做的一樣。

Swift Compiler Flags

現在你已經得到-D Something傳遞給斯威夫特編譯器。在您的銀行代碼,你現在可以這樣做:

#if Something 
    let foo = "bar" 
#endif 

它看起來很像C預處理器,但不像C,在所有的條件部分中的所有代碼必須是語法正確或程序將無法編譯。因此,您可以在構建設置中的每個目標上設置一個標誌,並在代碼中使用它們。

+3

更重要的是,#if,active或no中的所有代碼也必須是* complete *語法單元。所以你不能說''if /#else /#endif'只是'func'聲明,而把函數體留在'#if'之外。 – rickster 2014-12-04 02:17:26

+0

這是故事板的工作,我想改變基於故事板中的目標的形象 – 2016-07-25 11:49:27

+0

我不明白。它不應該是'如果Something == QA',否則如果Something == Stage' ...你寫它的方式,似乎該標誌的**存在**是所有必要的。如果兩個版本具有相同的標誌,會發生什麼?! – Honey 2018-02-06 21:03:01