Читать версию из Info.plist - PullRequest
       3

Читать версию из Info.plist

85 голосов
/ 30 октября 2010

Я хочу прочитать информацию о версии пакета из Info.plist в мой код, желательно в виде строки.Как я могу это сделать?

Ответы [ 5 ]

197 голосов
/ 30 октября 2010

Вы можете прочитать свой Info.plist в виде словаря с помощью

[[NSBundle mainBundle] infoDictionary]

И вы можете легко получить версию с помощью клавиши CFBundleVersion.

Наконец, вы можете получитьверсия с

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
10 голосов
/ 24 октября 2015

для пользователей 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)")
}
5 голосов
/ 25 июня 2014

Я знаю, что прошло некоторое время после квеста и ответа.

Начиная с iOS8, принятый ответ может не работать.

Это новый способ сделать это сейчас:

NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
4 голосов
/ 21 октября 2014

Теперь в iOS 8 обязательны оба поля. Ранее он работал без CFBundleShortVersionString. Но теперь это обязательное поле для добавления любого приложения в магазин приложений. И kCFBundleVersionKey сравнивается для загрузки каждой новой сборки, которая должна быть в инкрементном порядке. Специально для тестовых сборок. Я делаю это так,

NSString * version = nil;
    version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    if (!version) {
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
    }
3 голосов
/ 30 июня 2017

Swift 3:

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
...