web-dev-qa-db-ja.com

iOS:コードでapp-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になります。

93
sherlock

プロジェクトのinfo.plistの属性には、次の方法で直接アクセスできます...

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

たとえば、バージョン番号を取得するには、次のようにします

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

バージョン番号がinfo.plistに2つの属性を持っているという落とし穴があります-しかし、あなたはそのアイデアを得ますか? info.plistをソースコードとして表示する場合(info.plistを右クリック-[名前を付けて開く]を選択)、使用できるさまざまなキー名がすべて表示されます。

247
Damo

Swift 4 +Damoのソリューション の構文

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

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

Info.plistに簡単にアクセスできます:

ストーリーボードの名前を取得する:

NSString *storyboard  = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];

IPadにあるかどうかを検出し、UIMainStoryboardFile~ipadキーが無効。

12
rckoenes
NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"]; 
NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];
8
James Lobo

NSBundleでinfoDictionaryメソッドを使用することもできます。

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