我正在开发一款通用应用程序&想在我的代码中访问存储在app-info.plist文件中的值。
原因:我使用以下命令从故事板动态实例化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答案 0 :(得分:245)
您的项目的info.plist中的属性可以通过以下方式直接访问...
[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];
例如,要获取版本号,您可以执行以下操作
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
有一个问题,版本号现在在info.plist中有两个属性 - 但你明白了吗?如果您将info.plist视为源代码(右键单击info.plist - 选择Open As),您将看到可以使用的所有各种键名。
答案 1 :(得分:18)
Swift 4 + 语法
Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")
实施例
let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")
答案 2 :(得分:12)
您可以非常轻松地访问info.plist:
获取故事板的名称:
NSString *storyboard = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];
不确定它是否会检测到它是否在iPad中并且应该使用UIMainStoryboardFile~ipad
键设置。
答案 3 :(得分:8)
NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"];
NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];
答案 4 :(得分:5)
您还可以在NSBundle上使用infoDictionary方法:
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
NSString *version = infoPlistDict[@"CFBundleVersion"];