iOS:访问代码中的app-info.plistvariables
我正在使用通用应用程序,并想访问我的代码中存储在app-info.plist文件中的值。
原因:我从故事板dynamic实例化一个UIViewController使用:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];
现在,上面的故事板名称为“MainStoryboard_iPhone”是丑陋的。
我想做一些事情:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:appInfo.mainStoryboardBaseNamePhone bundle:nil]; self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];
appInfo可能是app-info.plist中所有值的NSDictionary
您项目的info.plist属性可以通过以下方式直接访问:
[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];
例如,要获取版本号,您可以执行以下操作
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
有一个问题,现在版本号在info.plist中有两个属性 – 但是你明白了吗? 如果你查看你的info.plist作为源代码(右键单击info.plist – selectOpen As),你将会看到所有你可以使用的各种键名。
那么你可以很容易地访问info.plist:
获取故事板的名称:
NSString *storyboard = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];
不知道是否会检测它是否在iPad中,并且应该使用UIMainStoryboardFile~ipad
键。
NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"]; NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];
你也可以在NSBundle上使用infoDictionary方法:
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary]; NSString *version = infoPlistDict[@"CFBundleVersion"];
对于Damo的解决scheme, Swift 4及以上的语法
Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")
例
let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")