Использование CFBundleGetVersionNumber - PullRequest
3 голосов
/ 27 сентября 2011

Я хочу получить номер версии из info.plist с помощью:

NSString *version = (NSString *)CFBundleGetVersionNumber(CFBundleGetMainBundle());

Это не дает мне строковое значение из ожидаемой версии пакета.

Это даетя ожидаю строку:

NSString *version = (NSString *)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);

Я хотел бы знать, как заставить работать первую форму, так как похоже, что это предпочтительный способ получить версию из info.plist.

Вот как я использую результат:

htmlAbout = [htmlAbout stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"[version]"] withString:version];

Я работаю в Xcode 4.1

Спасибо

Ответы [ 3 ]

2 голосов
/ 09 октября 2012
CFStringRef ver = CFBundleGetValueForInfoDictionaryKey(
                      CFBundleGetMainBundle(), 
                      kCFBundleVersionKey);
NSString *appVersion = (NSString *)ver;

Если вы используете ARC,

CFStringRef ver = CFBundleGetValueForInfoDictionaryKey(
                      CFBundleGetMainBundle(), 
                      kCFBundleVersionKey);
NSString *appVersion = (__bridge NSString *)ver;
2 голосов
/ 27 сентября 2011

в вашей программе существует серьезная ошибка преобразования: CFBundleGetVersionNumber возвращает UInt32, который не может быть преобразован через типовое преобразование в NSString (или любой тип объекта).

0 голосов
/ 04 апреля 2012

См. Документы Apple для CFBundleGetVersionNumber:

https://developer.apple.com/library/mac/#documentation/CoreFOundation/Reference/CFBundleRef/Reference/reference.html

В нем говорится, что ваша вторая форма это на самом деле предпочтительный способ для версий XY:

Если используются другие стили номера версии, а именно X, XY или XYZ, вы можете использовать CFBundleGetValueForInfoDictionaryKey с ключом kCFBundleVersionKey для извлечения номера версии в виде строки из информационного словаря пакета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...