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

我工作在一个通用应用程序和想访问的价值存储在应用程序信息。在我的代码中的 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

77709 次浏览

您的项目的 info.plist 中的属性可以通过以下方式直接访问..。

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

例如,要获取版本号,可以执行以下操作

NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

有一个陷阱,版本号现在在 info.plist 中有两个属性-但是你明白了吗?如果您将 info.plist 视为源代码(右键单击 info.plist-select Open 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];

You can also use the infoDictionary method on NSBundle:

NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
NSString *version = infoPlistDict[@"CFBundleVersion"];

用于 < a href = “ https://stackoverflow. com/a/9530129/3659227”> Damo 的解决方案的 Swift 4 + 语法

Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")

例子

let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")