iOS プロジェクトの現在のバージョンをコードで取得するにはどうすればよいですか? 質問する

iOS プロジェクトの現在のバージョンをコードで取得するにはどうすればよいですか? 質問する

NSStringどこかのファイルで定数を定義しなくても、iOS プロジェクト/アプリの現在のバージョンをオブジェクトとして取得できるようにしたいと思います。バージョン値を 2 か所で変更したくありません。

プロジェクト ターゲットの概要でバージョンを上げるときに、値を更新する必要があります。

ベストアンサー1

バージョン番号とビルド番号は次のように取得できます。

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

おすすめ記事