回答:
次のようにバージョンとビルド番号を取得できます。
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let build = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String
またはObjective-C
NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];
のカテゴリに次のメソッドがありますUIApplication
。
extension UIApplication {
static var appVersion: String {
return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
}
static var appBuild: String {
return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String
}
static var versionBuild: String {
let version = appVersion, build = appBuild
return version == build ? "v\(version)" : "v\(version)(\(build))"
}
}
要旨: https : //gist.github.com/ashleymills/6ec9fce6d7ec2a11af9b
Objective-Cでの同等のものは次のとおりです。
+ (NSString *) appVersion
{
return [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
}
+ (NSString *) build
{
return [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];
}
+ (NSString *) versionBuild
{
NSString * version = [self appVersion];
NSString * build = [self build];
NSString * versionBuild = [NSString stringWithFormat: @"v%@", version];
if (![version isEqualToString: build]) {
versionBuild = [NSString stringWithFormat: @"%@(%@)", versionBuild, build];
}
return versionBuild;
}
要旨: https : //gist.github.com/ashleymills/c37efb46c9dbef73d5dd
(NSString *)kCFBundleVersionKey
ではなくを使用することをお勧めし@"CFBundleVersion"
ます。入力するのは長くなりますが(オートコンプリートはここで役立ちます)、これはコンパイル時にチェックされる定数であるためです。
NSBundle
にする方がより正確UIApplication
です。静的呼び出しをインスタンス呼び出しで置き換えることもできます。
UIApplication
返される情報はアプリケーションに関するものなので、概念的にはこれはに適合します。また、これはmain
バンドルにのみ適用されます。これをバンドルのインスタンスメソッドにすることは意味がありません。
build
、あなたが言ったときにappBundle
(あなたのコードの2行目に)?
目標Cの場合:
1)アプリのバージョンを取得するには、以下を使用する必要があります。
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
2)ビルドバージョンを取得するには、以下を使用する必要があります。
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
Swiftでは、次を使用してバンドルバージョンを取得できます。
let info:NSDictionary = NSBundle.mainBundle().infoDictionary!
let version:String = info.objectForKey("CFBundleShortVersionString") as! String
versionLabel.text = "Version:" + version
私のオープンソースプロジェクトであるApp Update Trackerは、この機能(およびその他)をクラスメソッドの形で提供します。
+ (NSString *)getShortVersionString
+ (NSString *)getLongVersionString
次のように使用します。
#import "AppUpdateTracker.h"
NSLog(@"short version: %@", [AppUpdateTracker getShortVersionString]);
NSLog(@"long version: %@", [AppUpdateTracker getLongVersionString]);
注意してください
使用する必要があるキーのローカライズされた値を取得するには CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), "CFBundleShortVersionString" as CFString)
したがって、これらの両方の個別のSwiftバージョンがあります。
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
このレポに含まれています、チェックしてください: