私はユニバーサルアプリに取り組んでおり、私のコードの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になります。
プロジェクトのinfo.plistの属性には、次の方法で直接アクセスできます...
[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];
たとえば、バージョン番号を取得するには、次のようにします
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
バージョン番号がinfo.plistに2つの属性を持っているという落とし穴があります-しかし、あなたはそのアイデアを得ますか? info.plistをソースコードとして表示する場合(info.plistを右クリック-[名前を付けて開く]を選択)、使用できるさまざまなキー名がすべて表示されます。
Swift 4 +Damoのソリューション の構文
Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")
例
let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")
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"];