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
Les attributs de info.plist pour votre projet sont directement accessibles par le biais des éléments suivants ...
[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];
Par exemple, pour obtenir le numéro de version, procédez comme suit:
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
Il ya un truc dans le fait que le numéro de version a maintenant deux attributs dans info.plist - mais vous avez l’idée? Si vous affichez votre info.plist en tant que code source (cliquez avec le bouton droit de la souris sur info.plist - sélectionnez Ouvrir en tant que), vous aurez alors accès à tous les noms de clé que vous pouvez utiliser.
Swift 4 + syntaxe pour solution de Damo
Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")
Exemple
let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")
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 le UIMainStoryboardFile~ipad
clé installée.
NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"];
NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];
Vous pouvez également utiliser la méthode infoDictionary sur NSBundle:
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
NSString *version = infoPlistDict[@"CFBundleVersion"];