Как настроить полные URL в файлах xcconfig
У меня есть файл xcconfig, в котором содержится конфигурация сервера, на котором должно работать мое приложение. В режиме отладки это будет сервер, отличный от релизных сборок.
У меня проблема в том, что URL-адрес в форме http://www.stackru.com/ рассматривается как комментарий после двойной косой черты. Таким образом, строка, которую я получаю в коде, 'http:'
Я прочитал, что могу поставить флаг -traditional build в Info.plist, мне было интересно, если у кого-то еще была похожая проблема, и она решила ее?
Благодарю.
7 ответов
Вот простой обходной путь:
WEBSITE_URL = https:/$()/www.example.com
Я также не мог понять, как использовать двойную косую черту в файле xcconfig. Но я нашел обходной путь в
из списка рассылки Xcode-users: В xcconfig file сохраните URL-адрес без схемы http:
MYURL = stackru.com
В Info.plist установите значение свойства
http://${MYURL}
Просто объявить
SIMPLE_SLASH=/
Тогда ваш URL становится
http:$(SIMPLE_SLASH)/www.stackru.com
Другим подходом, улучшающим читаемость, может быть:
PROTOCOL = http:/
API_URL = $(PROTOCOL)/www.stackoverflow.com
Таким образом, протокол можно использовать в другом месте.
Вы можете использовать обратную косую черту, чтобы убежать:
URL = "http:\/\/mydomain.com"
РЕДАКТИРОВАТЬ
Не забудьте очистить свой проект перед повторной сборкой.
Вы не должны использовать файл xcconfig для этого параметра.
Файл xcconfig не является "обычным" заголовочным файлом или файлом модуля, который является входом препроцессора и, в конечном счете, входом для компилятора. Нигде не указано, как синтаксический анализатор файлов xcconfig обрабатывает кодировку символов, распознает ли он escape-последовательности, разворачивает ли он макросы, как определяются символьные литералы и многое другое.
В этом случае гораздо лучше иметь заголовочный файл "config.h" и использовать условные выражения, основанные на определении препроцессора:
#if defined (DEBUG)
NSURL* url = ...
#else
NSURL* url = ...
#endif
Вот, DEBUG
по умолчанию определяется для конфигурации отладки. Вы можете #define любое другое определение в настройках сборки в разделе "Макросы препроцессора".