159 votes

Comment obtenir la version actuelle de mon projet ios en code?

J'aimerais pouvoir obtenir la version actuelle de mon projet / application ios en tant qu'objet NSString sans avoir à définir une constante dans un fichier quelque part. Je ne veux pas changer la valeur de ma version à 2 endroits.

La valeur doit être mise à jour lorsque je bosse ma version dans le résumé de la cible du projet.

398voto

Ashley Mills Points 10205

Vous pouvez obtenir la version et construire les numéros comme suit:

 NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];
 

J'ai les méthodes suivantes dans une catégorie sur UIApplication :

 + (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;
}
 

Voici l'équivalent dans Swift:

 extension UIApplication {

    class func appVersion() -> String {
        return NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as String
    }

    class func appBuild() -> String {
        return NSBundle.mainBundle().objectForInfoDictionaryKey(kCFBundleVersionKey as NSString) as String
    }

    class func versionBuild() -> String {
        let version = appVersion(), build = appBuild()

        return version == build ? "v\(version)" : "v\(version)(\(build))"
    }
}
 

0voto

scrat84 Points 124

Pour ce faire, utilisez Swift:

 let version : AnyObject! = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString")
println("Version: " + version.description)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X