Info.plistのバンドルバージョン情報をコードに(できれば文字列として)読みたいです。これどうやってするの?
Info.plistを辞書として読むことができます
[[NSBundle mainBundle] infoDictionary]
そして、CFBundleVersion
キーでその方法で簡単にバージョンを取得できます。
最後に、バージョンを取得できます
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
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)")
}
クエストと答えからしばらく時間が経過したことを知っています。
iOS 8以降、受け入れられた回答が機能しない場合があります。
これが今の新しい方法です:
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];
}
スウィフト3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String