Lire la version d’Info.plist

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

Vous pouvez lire votre Info.plist en tant que dictionnaire avec

[[NSBundle mainBundle] infoDictionary] 

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

Enfin, vous pouvez obtenir la version avec

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

pour les utilisateurs de Swift:

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

pour les utilisateurs de Swift3:

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

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

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

C’est la nouvelle façon de le faire maintenant:

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

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

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

Swift 3:

 let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! Ssortingng let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionSsortingng"] as! Ssortingng