在Xcode构建期间预处理字符串文件

时间:2010-05-14 13:37:06

标签: iphone cocoa-touch xcode preprocessor

我知道有一种预处理我的info.plist文件的方法,但有没有类似的方法来处理我的Settings.bundle中的字符串文件?

我的问题:我有一个iPhone应用程序,我希望用户知道当前安装的版本。我通过在应用程序设置中显示它来完成此操作。现在,每当我更改info.plist中的捆绑版本时,我还必须更改Root.stringsSettings.bundle的版本。我可以运行一个更新它的脚本动作,但是使用预处理器会很好,因为我可以用它做更多有趣的事情。

谢谢!

2 个答案:

答案 0 :(得分:3)

预处理器XCode在所有字符串文件上运行是copystrings。它位于/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources中。这是一个简单的ruby脚本,但它不支持任何预处理/宏扩展。

你可能会扩展脚本,但是如你所建议的那样,在运行脚本构建阶段运行不同的脚本会更容易。

答案 1 :(得分:-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];