Легко установить номера сборки и версии вручную в Xcode, и я научился их увеличивать с помощью макроса во время сборки. Но как я могу ссылаться на их значения в коде?Обратитесь к номеру сборки или номеру версии в коде
ответ
Конечно, вы можете задать свой основной пакет для каталога информации, которая включает в себя все ключи и значение вашего info.plist, включая номер версии:
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *version = [info objectForKey:@"CFBundleShortVersionString"];
Wow 5 хорошие ответы в течение 12 минут после размещения вопроса! Все заслуживают зеленого чека, но я могу только принять его, поэтому я беру его с самой ранней меткой времени. – RobertL
@RobertL В этом случае вы могли бы поддержать свои ответы, чтобы дать им некоторую репутацию. – JustSid
Сделал это. Я не знал, что могу это сделать до сих пор. Благодарю. – RobertL
Вы можете получить info.plist значения с этой частью кода (замените CFBundleShortVersionString
с ключом info.plist, которого вы хотите ср Recommended Info.plist Keys)
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
NSString *appVersion = [infoDict objectForKey:@"CFBundleShortVersionString"]; // example: 1.0.0
NSString *buildNumber = [infoDict objectForKey:@"CFBundleVersion"]; // example: 42
Является ли это документально зарегистрированным в документах Apple? Благодаря! – snowbound
https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html документирует ключи, которые могут быть в приложении (ну, на самом деле, любой комплект) Info.plist, включая эти два. –
NSBundle *bundle = [NSBundle mainBundle];
NSString *appVersion = [bundle objectForInfoDictionaryKey:(NSString *)@"CFBundleShortVersionString"];
NSString *appBuildNumber = [bundle objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
Поскольку эти значения сохраняется в вашем приложении Info.plist
вы можете прочитать затем с помощью методов, предусмотренных на NSBundle
:
NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: CFBundleShortVersionString];
См Accessing bundles contents как авторитетному ссылки на получение данных из файла Info.plist и Core Foundation keys для доступного Info.plist ключи.
@robo Я сделал запись о том, как автоинкремент номер сборки (а не номер версии, но это очень похоже), но теперь я не могу ее найти. Я попытаюсь объяснить, что я сделал. Надеюсь, это будет достаточно ясно, чтобы следовать.
В Xcode 4 посмотрите на панели навигации, которая представляет собой панель с левой стороны экрана Xcode. Он имеет 7 значков в верхней части. Выберите левый значок (выглядит как папка с файлом), чтобы получить панель «Навигатор проекта».
Теперь щелкните по первому элементу в этой области, который является самим проектом. Это открывает большое окно в центре с узким столбцом слева от него.
Узкая колонка имеет 2 секции: «ПРОЕКТ» И «ЦЕЛИ». Нажмите на название своего проекта в разделе «ЦЕЛИ». Теперь центральная панель имеет 5 вкладок вверху: «Сводка», «Информация», «Настройки сборки», «Сборка фаз» и «Правила сборки».
Перейдите на вкладку «Построить фазы». Если ваша конфигурация такая же, как у меня, теперь вы увидите 4 раздела в главном окне: «Зависимости целей», «Копирование ресурсов пакета», «Скомпилировать источники» и «Ссылка ...». Нажмите «Добавить этап сборки» (в правом нижнем углу) и выберите «Добавить сценарий запуска». Пятый раздел теперь появляется в центральной панели с надписью «Run 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"
Убедитесь, что «Запустить скрипт только при установке» НЕ ПРОВЕРЕН.
Вот и все! Теперь ваш номер сборки автоматически увеличивается при каждом создании проекта.
Этот скрипт предполагает, что в вашем файле info.plist имеется простой номер строчной шестерки и увеличивается его как шестнадцатеричный. Я не уверен, что он делает, если номер сборки отсутствует.Но легко ввести начальное значение - просто перейдите на вкладку «Сводка» в той же центральной панели, которую вы использовали выше, и введите «1» (или любое другое значение, которое вам нравится) в поле «Создать» (но не в формате строка вроде 1.0).
Я думаю, что шестнадцатеричный сценарий, который я дал первым, недействителен для отправки в App Store. Вот тот же скрипт, использующий десятичную арифметику.
#!/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"
большое спасибо. (10char) – phlebotinum
К моему удивлению, я узнал, что шестнадцатеричные номера версий не проходят проверку для App Store. Я отправляю ответ ниже с пересмотренной версией скрипта, который выполняет десятичную арифметику. Смотри ниже. – RobertL
Я пошел дальше и отредактировал ваш десятичный скрипт в нижней части этого ответа. Таким образом можно удалить другой ответ, сократив некоторые из них. – thegrinner
В Swift:
let version = NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as? String
- 1. Обратитесь к столбцу по его номеру (индексу)
- 2. Обратитесь к номеру итерации внутри цикла в Stata
- 3. Прикрепите номер версии к номеру ревизии SVN
- 4. Обратитесь к столбцам по номеру в: = присваивании при использовании data.table
- 5. Как получить доступ к номеру версии distutils?
- 6. Двойной к номеру
- 7. ToString Применяется к номеру
- 8. Присоединиться к номеру проекта
- 9. Группа по номеру версии в поле VARCHAR?
- 10. Строка к номеру JavaScript
- 11. CountUp к целевому номеру
- 12. Доступ к текущему номеру редакции
- 13. Анализ записей по номеру версии в PostgreSQL
- 14. Доступ к номеру в подкаталогах
- 15. Как получить доступ к номеру сборки в сценарии powershell
- 16. Регулярное выражение соответствует 2-значному номеру или 3-значному номеру
- 17. Доступ к номеру сборки Teamcity в скрипте построения Gradle
- 18. Как вернуться к номеру индекса
- 19. VS2008 - Добавление букв к номеру версии (т.е. 1.1.1.12-Dev)
- 20. Powershell: выберите папку по номеру версии
- 21. SQL извлекает отдельные строки по номеру версии
- 22. Как получить доступ к номеру версии любой другой цели
- 23. JavaScript, добавляющий строку к номеру
- 24. Обращение римской цифры к номеру
- 25. найти заказ, ближайший к номеру
- 26. добавить разделители к телефонному номеру
- 27. Добавить +1 к номеру телефона
- 28. Применение списка функций к номеру
- 29. Javascript: Добавление запятой к номеру
- 30. Добавление запятых к номеру php
у вас есть задание/ссылку о том, как Autocreate версии #s? – phlebotinum
@robo см. Мой «ответ» ниже. – RobertL