バンドルバージョン情報をInfo.plistからコードに、できれば文字列として読み込みたいのですが。これどうやってするの?
回答:
あなたはあなたのInfo.plistを辞書として読むことができます
[[NSBundle mainBundle] infoDictionary]
そして、あなたはCFBundleVersion
キーでそのバージョンを簡単に得ることができます。
最後に、バージョンを取得できます
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
objectForInfoDictionaryKey:
、それはローカライズされた値を返しているので、代わりに利用可能な場合:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
CFBundleVersion
ビルドにバージョン変更され、バージョンはCFBundleShortVersionString
です。
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
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)")
}
クエストと回答から時間が経っていることを知っています。
iOS8以降、受け入れられた回答が機能しない可能性があります。
これは今それを行う新しい方法です:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
iOS 8では、両方のフィールドが必要です。以前は、なしで動作しCFBundleShortVersionString
ます。しかし、今では、アプリストアでアプリを送信するために必須のplistフィールドです。またkCFBundleVersionKey
、新しいビルドをすべてアップロードするために比較されます。これは、インクリメンタルな順序でなければなりません。TestFlightビルド専用。私はこのようにします
NSString * version = nil;
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if (!version) {
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
}