2010-05-14 44 views
4

我知道有一種方法可以預處理我的info.plist文件,但是有沒有類似的方法來處理我的Settings.bundle中的字符串文件?在Xcode構建過程中預處理字符串文件

我的問題:我有一個iPhone應用程序,我想讓用戶知道當前安裝的版本。我通過在應用程序設置中顯示它來做到這一點。現在,每次我在我的info.plist中更改軟件包版本時,我也必須更改Settings.bundle中的Root.strings版本。我可以運行更新它的腳本動作,但使用預處理器會很好,因爲我可以用它做更多有趣的事情。

謝謝!

回答

-1

讓這個視圖詢問包,然後直接查詢Info.plist文件並提取CFBundleVersion(或相應的鍵要提取)的版本應該永遠需要被存儲在一個文件.strings。接下來,你需要做的是有一個格式字符串來準備顯示。一個有用的東西,如果你關心本地化,而不是在你的.strings中有一個本地化的字符串,如"%@<CFBundleVersion format string>" = "Version: %@";那麼你會得到一個快速的視覺指示器,如果你的本地化者已經完成了所有語言的工作。

MyInfoView *infoView = /*...*/; 
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 
infoView.versionLabel.text = [NSString stringWithFormat:NSLocalizedString(@"%@<CFBundleVersion format string>",nil), version]; 
+0

如果字符串將出現在Settings.app中,那麼該版本需要位於字符串文件中。請重新閱讀我的問題。 – stigi 2010-06-21 16:08:44

3

在所有字符串文件上運行的預處理器XCode是copystrings。它位於/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources。這是一個簡單的ruby腳本,但它不支持任何預處理/宏擴展。

您可能會導致擴展腳本,但如您已經建議的那樣,在運行腳本構建階段運行不同的腳本會更容易。

+0

謝謝。不知道copystrings。 +1 – stigi 2010-07-06 10:33:46