iOS: dostęp do informacji o aplikacji.zmienne plist w kodzie
Pracuję nad uniwersalną aplikacją i chciałbym uzyskać dostęp do wartości przechowywanych w App-info.plik plist w kodzie.
Powód: uruchamiam UIViewController dynamicznie ze storyboardu za pomocą:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];
Teraz, posiadanie nazwy storyboardu @"MainStoryboard_iPhone" powyżej jest brzydkie.
Chcę zrobić coś takiego:
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:appInfo.mainStoryboardBaseNamePhone bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];
Gdzie appInfo może być NSDictionary wszystkich wartości w App-info.plist
5 answers
Atrybuty z info.plist dla Twojego projektu są bezpośrednio dostępne przez następujące...
[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];
Na przykład, aby uzyskać numer wersji, możesz wykonać następujące czynności
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
Jest taka sytuacja, że Numer wersji ma teraz dwa atrybuty w info.plist - ale masz pomysł? Jeśli wyświetlasz swoje informacje.plist jako kod źródłowy (kliknij prawym przyciskiem myszy info.plist-wybierz Otwórz jako), a następnie zobaczysz wszystkie różne nazwy kluczy, których możesz użyć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-02 08:24:43
Swift 4 + składnia dla Damo ' s solution
Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")
Przykład
let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-09 10:11:11
Możesz uzyskać dostęp do informacji.plist bardzo łatwo:
Uzyskanie nazwy storyboardu:
NSString *storyboard = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];
Nie wiem, czy wykryje, czy jest w iPadzie i powinien użyć zainstalowanego klucza UIMainStoryboardFile~ipad
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-02 08:26:42
NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"];
NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-10 04:16:01
Możesz również użyć metody infoDictionary na NSBundle:
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
NSString *version = infoPlistDict[@"CFBundleVersion"];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-23 16:03:25