she*_*ock 97 iphone objective-c info.plist ipad ios
我正在开发一个通用应用程序,并希望在我的代码中访问存储在app-info.plist文件中的值.
原因:我使用以下命令从故事板动态实例化UIViewController:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];
Run Code Online (Sandbox Code Playgroud)
现在,上面的故事板名称@"MainStoryboard_iPhone"是丑陋的.
我想做的事情如下:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:appInfo.mainStoryboardBaseNamePhone bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];
Run Code Online (Sandbox Code Playgroud)
其中appInfo可能是app-info.plist中所有值的NSDictionary
Dam*_*amo 250
您的项目的info.plist中的属性可通过以下方式直接访问...
[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];
Run Code Online (Sandbox Code Playgroud)
例如,要获取版本号,您可以执行以下操作
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
Run Code Online (Sandbox Code Playgroud)
有一个问题,版本号现在在info.plist中有两个属性 - 但你明白了吗?如果您将info.plist视为源代码(右键单击info.plist - 选择Open As),您将看到可以使用的所有各种键名.
Mav*_*ick 20
适用于Damo解决方案的Swift 4+语法
Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")
Run Code Online (Sandbox Code Playgroud)
例
let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")
Run Code Online (Sandbox Code Playgroud)
rck*_*nes 12
那么你可以很容易地访问info.plist:
获取故事板的名称:
NSString *storyboard = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];
Run Code Online (Sandbox Code Playgroud)
不确定它是否会检测到它是否在iPad中,它应该使用UIMainStoryboardFile~ipad
密钥设置.
NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"];
NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];
Run Code Online (Sandbox Code Playgroud)
您还可以在NSBundle上使用infoDictionary方法:
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
NSString *version = infoPlistDict[@"CFBundleVersion"];
Run Code Online (Sandbox Code Playgroud)