108 votes

iOS: accès aux variables app-info.plist dans le code

Je travaille sur une application universelle et souhaite accéder aux valeurs stockées dans le fichier app-info.plist dans mon code.

Raison: j'instancie un UIViewController de manière dynamique à partir d'un storyboard en utilisant:

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

Maintenant, avoir le nom du storyboard @ "MainStoryboard_iPhone" ci-dessus est moche.

Je veux faire quelque chose comme:

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

où appInfo peut peut-être être un NSDictionary de toutes les valeurs dans app-info.plist

258voto

Damo Points 5382

Les attributs de l'info.plist de votre projet sont directement accessibles par le suivant...

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

Par exemple, pour obtenir le numéro de version, vous pouvez effectuer les opérations suivantes

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

Il y a une chasse aux sorcières dans le numéro de version a maintenant deux attributs dans l'info.plist - mais vous voyez l'idée? Si vous affichez votre info.plist que le code source (clic droit sur l'info.plist - sélectionnez Ouvrir en tant Que), alors vous obtiendrez de voir tous les différents noms que vous pouvez utiliser.

12voto

rckoenes Points 44278

Eh bien, vous pouvez accéder très facilement au fichier info.plist:

Obtenir le nom du storyboard:

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

Je ne sais pas s'il détectera s'il se trouve dans un iPad et il devrait utiliser la clé UIMainStoryboardFile~ipad installée.

8voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X