2016-01-06 46 views
1

我的項目中使用,有一個目標,有三種配置:環境變量的代碼的Xcode斯威夫特

調試,UAT,釋放

我有使用這些配置對於建設四座共享方案/運行/測試/資料/分析/歸檔。

在我的應用程序中,每個方案都有不同的包ID。這很容易改變,我在每個配置的Product Bundle Identifier中都這樣做了。

但是,我希望每個方案連接到不同的REST API。 (dev.example.com/api等)

什麼是設置變量爲每個環境,然後我的應用程序中使用它的最佳方式?

我已經看過了。

1)斯威夫特編譯器>自定義標記(礦目前$(繼承) 「-D」 「的CocoaPods」)

2)NSProcessInfo.processInfo()環境

3)爲每個環境添加一個Configuration.plist文件

基本上,我不清楚這是做這件事的最好方法。

謝謝你的幫助。

回答

2

我個人對每種方案都使用不同的.plist文件。我首先嚐試了自定義標誌方法,但隨着應用程序的增長,我需要越來越多的基於方案的配置,而且事情變得混亂。

不同的.plist文件至少爲我的項目創造了奇蹟。

+0

感謝您ÿ我們的回覆。我爲這個指南中的每個不同環境創建了三個新的configuration.plist文件:http://appfoundry.be/blog/2014/07/04/Xcode-Env-Configuration/ 我已經添加了建立階段。 現在,這些plist文件目前是空的。每個plist文件是否需要完整,還是添加到info.plist?如果這些plist文件中唯一的東西是唯一的環境變量(其餘的URL),它會起作用嗎? 謝謝 –

+0

他們必須是完整的,或者你可以創建一個新的plist(不是標準的info.plist),然後通過配置類或其他方法引用它。如果你使用後者,你只需要複製每個plist文件中不同的條目。它取決於你真的。我通過info.plist複製所有內容,因爲我對每個環境都做了很多改變。 – tskulbru

+0

這個完美的作品。謝謝。 –

2

我通常喜歡這樣的:

我在不同.xcconfig文件中定義的常量,那麼我將它們用於在一個單一的plist文件的密鑰。

比方說,你在這個你debug.xcconfig

<pre> 
BASEURL = api.dev.com/api/" 
</pre> 

然後,在你的plist,你會添加一個關鍵baseUrl = http://${BASEURL}

然後,在代碼中,你會與訪問 NSBundle.mainBundle().infoDictionary?["baseUrl"]

這是一個偉大的文章,如果您想了解更多關於xcconfig:http://www.jontolof.com/cocoa/using-xcconfig-files-for-you-xcode-project/

+0

也是一個很好的方法! – tskulbru