Подтвердить что ты не робот

См. Номер сборки или номер версии в коде

Легко установить номера сборки и версии вручную в Xcode, и я узнал, как увеличивать их с помощью макроса во время сборки. Но как я могу ссылаться на их значения в коде?

4b9b3361

Ответ 1

Конечно, вы можете задать свой основной пакет для справочного каталога, который включает в себя все ключи и значения вашего info.plist, включая номер версии:

NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *version = [info objectForKey:@"CFBundleShortVersionString"];

Ответ 2

NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
NSString *appVersion = [infoDict objectForKey:@"CFBundleShortVersionString"]; // example: 1.0.0
NSString *buildNumber = [infoDict objectForKey:@"CFBundleVersion"]; // example: 42 

Ответ 3

@robo Я сделал запись о том, как автоинкремент номер сборки (а не номер версии, но это очень похоже), но теперь я не могу ее найти. Я попытаюсь объяснить, что я сделал. Я надеюсь, что это будет достаточно ясно, чтобы следовать.

В Xcode 4 посмотрите на панели "Навигатор", которая представляет собой панель с левой стороны экрана Xcode. Он имеет 7 значков в верхней части. Выберите левый значок (выглядит как папка с файлом), чтобы получить панель "Навигатор проекта".

Теперь нажмите на первый элемент в этой области, который является самим проектом. Это открывает большое окно в центре с узким столбцом слева от него.

Узкая колонка имеет 2 раздела: "ПРОЕКТ" И "ЦЕЛИ". Нажмите на название своего проекта в разделе "ЦЕЛИ". Теперь центральная панель имеет 5 вкладок вверху: "Сводка", "Информация", "Настройки сборки", "Сборка фаз" и "Правила сборки".

Нажмите вкладку "Построить фазы". Если ваша конфигурация такая же, как у меня, теперь вы увидите 4 раздела в главном окне: "Зависимости целей", "Копирование ресурсов пакета", "Скомпилировать источники" и "Ссылка...". Нажмите "Добавить этап сборки" (в правом нижнем углу) и выберите "Добавить запуск Script". Пятый раздел теперь появляется в центральной панели с надписью "Run Script". Перетащите раздел "Запустить Script", так что это второй раздел сверху, чуть ниже "Зависимости целей".

Теперь нажмите треугольник раскрытия для раздела Run Script. Это откроет окно, в которое вы можете поместить script. Скопируйте и вставьте в это окно Script.

#!/bin/bash    
bN=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
bN=$((0x$bN)) 
bN=$(($bN + 1)) 
bN=$(printf "%X" $bN)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$INFOPLIST_FILE"

Убедитесь, что "Запустить Script только при установке" НЕ ПРОВЕРЕН.

Что это! Теперь ваш номер сборки автоматически увеличивается каждый раз при создании проекта.

Этот Script предполагает, что в вашем файле info.plist есть простой номер строчной шестнадцатеричной сборки и увеличивается его как шестнадцатеричный. Я не уверен, что он делает, если номер сборки отсутствует. Но легко ввести начальное значение - просто перейдите на вкладку "Сводка" в той же центральной панели, которую вы использовали выше, и введите "1" (или любое другое значение) в поле "Построить" (но не отформатировано строка как 1.0).


Я думаю, что шестнадцатеричный Script, который я дал первым, недействителен для отправки в App Store. Здесь используется Script с использованием десятичной арифметики.

#!/bin/bash    
bN=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") 
((bN += 1))
bN=$(printf "%d" $bN)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$INFOPLIST_FILE"

Ответ 4

NSBundle *bundle = [NSBundle mainBundle];   
NSString *appVersion = [bundle objectForInfoDictionaryKey:(NSString *)@"CFBundleShortVersionString"];
NSString *appBuildNumber = [bundle objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

Ответ 5

Вы можете получить значения info.plist с этим фрагментом кода (замените CFBundleShortVersionString на ключ info.plist, который вы хотите cf. Рекомендуемые ключи Info.plist)

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]

Ответ 6

Так как эти значения хранятся в вашем приложении Info.plist, вы можете прочитать затем с помощью методов, представленных на NSBundle:

NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: CFBundleShortVersionString];

См. Доступ к содержимому пакетов в качестве авторитетной справки о получении данных из вашего файла Info.plist и Ключи Core Foundation для доступных ключей Info.plist.

Ответ 7

В Swift:

let version = NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as? String