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")