iOS:在代码中访问app-info.plist变量

时间:2012-03-02 08:18:59

标签: iphone objective-c ios ipad info.plist

我正在开发一款通用应用程序&想在我的代码中访问存储在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

5 个答案:

答案 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)

<{3}}

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"];