Info.plistからバージョンを読み取る


回答:


201

あなたはあなたのInfo.plistを辞書として読むことができます

[[NSBundle mainBundle] infoDictionary]

そして、あなたはCFBundleVersionキーでそのバージョンを簡単に得ることができます。

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

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

完璧です。これは、使用しているCF *関数のすべての行よりもはるかに単純です... NSDictionaryを取得するための迅速な方法があったに違いないと確信しました。
シチュー

16
バージョン番号の場合、これは問題ではありませんが、他のキーのためにあなたが使用する場合がありますobjectForInfoDictionaryKey:、それはローカライズされた値を返しているので、代わりに利用可能な場合:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
Zargony

20
Xcode4では、ターゲットの概要パネルを見ると、バージョンとビルドのフィールドが表示されていることに注意してください。CFBundleVersionビルドにバージョン変更され、バージョンはCFBundleShortVersionStringです。
11

5
これは、バージョン&ビルド番号の両方を取得し、それらを一緒にフォーマットされます: NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
グラハム・パークス

CFBundleShortVersionStringをobjectForKeyメソッドのキーとして使用します。
ayalcinkaya

11

Swiftユーザーの場合:

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

Swift3ユーザーの場合:

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

5

クエストと回答から時間が経っていることを知っています。

iOS8以降、受け入れられた回答が機能しない可能性があります。

これは今それを行う新しい方法です:

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

6
これがそうである理由へのリンクがありますか?
イアン・ウォーバートン

4

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

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

ありがとう.. version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@ "CFBundleShortVersionString"]; 私のために働いた
swiftBoy 2015年

3

スウィフト3:

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.