【发布时间】:2014-09-25 14:25:27
【问题描述】:
我有一个应用设置文件,其中显示了我们应用的版本号。这个想法是在编译时更新 Root.plist,这样我们就不必更新两个地方而不是一个。我们更新了构建设置版本,并希望这些设置在编译时更新 Root.plist。
此代码提取构建设置的信息,如何更新 Root.plist 文件?
NSString *appBuildNo = [[NSBundle mainBundle]objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *appBuildVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSString *appBuildStr = [NSString stringWithFormat:@"%@ Build %@", appBuildNo, appBuildVersion];
NSURL * settingsURL = [[NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"Settings" withExtension:@"bundle"]]
URLForResource:@"Root" withExtension:@"plist"];
NSDictionary * settingsDict = [NSDictionary dictionaryWithContentsOfURL:settingsURL];
NSArray * settingsArr = [settingsDict objectForKey:@"PreferenceSpecifiers"];
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
for( NSDictionary * setting in settingsArr ){
NSString * key = [setting objectForKey:@"DefaultValue"];
[defaults setValue:appBuildStr forKey:key];
[defaults synchronize];
break;
}
这个想法是默认更新 Root.plist 但它不起作用。任何帮助将不胜感激
【问题讨论】:
-
是的,使用 External Build System 模板编写一个实现为单独构建目标的脚本,并使用
PlistBuddy更新info.plist。然后让应用目标依赖于这个脚本目标。 -
谢谢你的回复,你描述的方法我不熟悉,你能不能扩展一下。非常感谢
标签: ios xcode plist nsuserdefaults