web-dev-qa-db-fra.com

Lire la version d'Info.plist

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

86
John Smith

Vous pouvez lire votre Info.plist sous forme de dictionnaire avec

[[NSBundle mainBundle] infoDictionary]

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

Enfin, vous pouvez obtenir la version avec

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

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)")
}
10
ayalcinkaya

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 le faire maintenant:

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

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

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

Swift 3:

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