web-dev-qa-db-ja.com

Info.plistからバージョンを読み取ります

Info.plistのバンドルバージョン情報をコードに(できれば文字列として)読みたいです。これどうやってするの?

86
John Smith

Info.plistを辞書として読むことができます

[[NSBundle mainBundle] infoDictionary]

そして、CFBundleVersionキーでその方法で簡単にバージョンを取得できます。

最後に、バージョンを取得できます

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
198
gcamp

for Swift users:

if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
    print("version is : \(version)")
}

swift3ユーザーの場合:

if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
    print("version is : \(version)")
}
10
ayalcinkaya

クエストと答えからしばらく時間が経過したことを知っています。

iOS 8以降、受け入れられた回答が機能しない場合があります。

これが今の新しい方法です:

NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
5
Michael Kessler

IOS 8では、両方のフィールドが必要です。以前は、CFBundleShortVersionStringなしで動作します。しかし今では、アプリストアでアプリを送信するために必須のplistフィールドです。そして、kCFBundleVersionKeyはすべての新しいビルドをアップロードするために比較されます。これは増分ビルドでなければなりません。特にTestFlightビルド用。このようにして、

NSString * version = nil;
    version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    if (!version) {
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
    }
4
karim

スウィフト3:

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
3
Nitin Nain