Файл строк предварительной обработки во время сборки Xcode - PullRequest
4 голосов
/ 14 мая 2010

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

Моя проблема: у меня есть приложение для iPhone, и я хочу, чтобы пользователь знал о текущей установленной версии. Я делаю это, отображая это в настройках приложений. Теперь каждый раз, когда я меняю версию пакета в моем info.plist, мне также приходится менять версию в Root.strings в Settings.bundle. Я мог бы выполнить действие сценария, которое обновляет его, но было бы неплохо использовать препроцессор, поскольку я мог бы делать с ним еще более забавные вещи.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 06 июля 2010

Препроцессор XCode работает на всех строковых файлах - это copystrings. Он находится в /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources. Это простой скрипт ruby, но он не поддерживает предварительную обработку / макроразложение.

Вы могли бы, конечно, продлить сценарий, но тогда вам будет проще с другим сценарием, запущенным на этапе построения сценария запуска, как вы уже предлагали.

0 голосов
/ 14 июня 2010

Сделайте так, чтобы ваше представление запрашивало пакет, а затем напрямую запрашивает файл Info.plist и извлекает CFBundleVersion (или соответствующий ключ, который вы хотите извлечь). Никогда не нужно сохранять версию в .strings файл. Далее все, что вам нужно сделать, это иметь строку формата, чтобы подготовить ее к отображению. Одна полезная вещь, если вы заботитесь о локализации, это вместо этого иметь локализованную строку в вашем .strings, помеченную как-то вроде "%@<CFBundleVersion format string>" = "Version: %@"; Тогда вы получите быстрый визуальный индикатор, если ваши локализаторы выполнили свою работу на всех языках.

MyInfoView *infoView = /*...*/;
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
infoView.versionLabel.text = [NSString stringWithFormat:NSLocalizedString(@"%@<CFBundleVersion format string>",nil), version];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...