Я хочу прочитати інформацію про версію набору з Info.plist у своєму коді, бажано як рядок. Як я можу це зробити?
Відповіді:
Ви можете прочитати ваш Info.plist як словник за допомогою
[[NSBundle mainBundle] infoDictionary]
І ви можете легко отримати версію за CFBundleVersion
ключем таким чином.
Нарешті, ви можете отримати версію з
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
objectForInfoDictionaryKey:
замість них, оскільки він повертає локалізоване значення, якщо воно доступне:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
CFBundleVersion
було змінено на "Збірка" та "Версія" CFBundleShortVersionString
.
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
self.versionLabel.text = [NSString stringWithFormat:@"%@.%@", version, build];
для користувачів Swift:
if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
print("version is : \(version)")
}
для користувачів Swift3:
if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
print("version is : \(version)")
}
Я знаю, що з часу квесту та відповіді минув якийсь час.
З iOS8 прийнята відповідь може не спрацювати.
Це новий спосіб зробити це зараз:
NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
Тепер у iOS 8 обоє поля необхідні. Раніше це працювало без CFBundleShortVersionString
. Але зараз це необхідне поле plist, щоб подати будь-яку програму в магазин додатків. І kCFBundleVersionKey
порівнюється для завантаження кожної нової збірки, яка повинна бути поступовим. Спеціально для збірок TestFlight. Я роблю це так,
NSString * version = nil;
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if (!version) {
version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
}
Свіфт 3:
let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String