我知道有一种预处理我的info.plist文件的方法,但有没有类似的方法来处理我的Settings.bundle中的字符串文件?
我的问题:我有一个iPhone应用程序,我希望用户知道当前安装的版本。我通过在应用程序设置中显示它来完成此操作。现在,每当我更改info.plist中的捆绑版本时,我还必须更改Root.strings
中Settings.bundle
的版本。我可以运行一个更新它的脚本动作,但是使用预处理器会很好,因为我可以用它做更多有趣的事情。
谢谢!
答案 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];