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];