restricciones olvide eliminar descargar como codigo apple iphone objective-c ios ipad info.plist

iphone - olvide - iOS: accede a las variables app-info.plist en el código



olvide mi codigo de restricciones iphone 5 (5)

Bueno, puedes acceder al info.plist muy fácilmente:

Obtener el nombre del guión gráfico:

NSString *storyboard = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];

No estoy seguro si detectará si está en un iPad y debería usar la clave UIMainStoryboardFile~ipad instalada.

Estoy trabajando en una aplicación universal y me gustaría acceder a los valores almacenados en el archivo app-info.plist en mi código.

Motivo: instanciar un UIViewController dinámicamente desde un guión gráfico usando:

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];

Ahora, tener el nombre del guión gráfico @ "MainStoryboard_iPhone" de arriba es feo.

Quiero hacer algo como:

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:appInfo.mainStoryboardBaseNamePhone bundle:nil]; self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];

donde appInfo puede ser un NSDictionary de todos los valores en app-info.plist


Los atributos de info.plist para su proyecto son directamente accesibles por el siguiente ...

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

Por ejemplo, para obtener el número de versión, puede hacer lo siguiente

NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

Hay un problema con el número de versión que ahora tiene dos atributos en el info.plist, pero ¿entiendes la idea? Si visualiza su info.plist como código fuente (haga clic con el botón secundario en info.plist - seleccione Abrir como), podrá ver todos los nombres de las teclas que puede usar.


Sintaxis de Swift 4+ para la solución de Damo

Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")

Ejemplo

let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")


También puede usar el método infoDictionary en NSBundle:

NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary]; NSString *version = infoPlistDict[@"CFBundleVersion"];


NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"]; NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];