iphone objective-c cocoa-touch xcode info.plist

iphone - Lea la versión de Info.plist



objective-c cocoa-touch (5)

Ahora en iOS 8 ambos campos son necesarios. Anteriormente funciona sin CFBundleShortVersionString . Pero ahora es un campo plist requerido para enviar cualquier aplicación en la tienda de aplicaciones. Y se compara kCFBundleVersionKey para cargar cada nueva compilación, que debe estar en orden incremental. Especialmente para construcciones TestFlight. Lo hago de esta manera,

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

Quiero leer la información de la versión del paquete de Info.plist en mi código, preferiblemente como una cadena. ¿Cómo puedo hacer esto?


Puede leer su Info.plist como un diccionario con

[[NSBundle mainBundle] infoDictionary]

Y puede obtener fácilmente la versión en la clave CFBundleVersion esa manera.

Finalmente, puedes obtener la versión con

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


Sé que ha pasado un tiempo desde la búsqueda y la respuesta.

Desde iOS8, la respuesta aceptada podría no funcionar.

Esta es la nueva forma de hacerlo ahora:

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


para usuarios de Swift:

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

para usuarios de Swift3:

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


Swift 3:

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