86 votes

Lire la version depuis Info.plist

Je veux lire les informations de version du bundle depuis Info.plist dans mon code, de préférence sous forme de chaîne. Comment puis-je le faire ?

198voto

gcamp Points 9804

Vous pouvez lire votre Info.plist comme un dictionnaire avec

[[NSBundle mainBundle] infoDictionary]

Et vous pouvez facilement obtenir la version à la CFBundleVersion clé de cette façon.

Enfin, vous pouvez obtenir la version avec

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];

12voto

ayalcinkaya Points 638

Pour les utilisateurs de Swift :

if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
    print("version is : \(version)")
}

pour les utilisateurs de Swift3 :

if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
    print("version is : \(version)")
}

5voto

Michael Kessler Points 7805

Je sais qu'un certain temps s'est écoulé depuis la quête et la réponse.

Depuis iOS8, la réponse acceptée peut ne pas fonctionner.

C'est la nouvelle façon de faire maintenant :

NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);

4voto

karim Points 4704

Maintenant, dans iOS 8, les deux champs sont nécessaires. Auparavant, cela fonctionnait sans le CFBundleShortVersionString . Mais maintenant, c'est un champ obligatoire pour soumettre une application dans l'App Store. Et kCFBundleVersionKey est comparé pour le téléchargement de chaque nouvelle build, qui doit être dans un ordre incrémental. Spécialement pour les builds de TestFlight. Je le fais de cette façon,

NSString * version = nil;
    version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    if (!version) {
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
    }

3voto

Nitin Nain Points 1384

Swift 3 :

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String

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