Chcę wczytać informacje o wersji pakietu z Info.plist do mojego kodu, najlepiej jako ciąg. Jak mogę to zrobić?
iphone
objective-c
cocoa-touch
xcode
info.plist
John Smith
źródło
źródło
objectForInfoDictionaryKey:
zamiast tego, ponieważ zwraca on zlokalizowaną wartość, jeśli jest dostępna:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
CFBundleVersion
został zmieniony na kompilację, a wersja toCFBundleShortVersionString
.NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
dla użytkowników Swift:
if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") { print("version is : \(version)") }
dla użytkowników Swift3:
if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") { print("version is : \(version)") }
źródło
Wiem, że od poszukiwania i odpowiedzi minęło trochę czasu.
Od iOS8 zaakceptowana odpowiedź może nie działać.
Oto nowy sposób na zrobienie tego teraz:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
źródło
Teraz w iOS 8 oba pola są konieczne. Wcześniej działa bez rozszerzenia
CFBundleShortVersionString
. Ale teraz wymagane jest pole plist, aby przesłać dowolną aplikację w sklepie z aplikacjami. IkCFBundleVersionKey
jest porównywany z przesyłaniem każdej nowej kompilacji, która musi być w kolejności przyrostowej. Specjalnie dla kompilacji TestFlight. Robię to w ten sposóbNSString * version = nil; version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; if (!version) { version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; }
źródło
Swift 3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
źródło