Comments 2
Мы не можем напрямую из кода получить доступ к этим настройкам
Вообще-то можем, если сделать это в C/C++/ObjC коде, т.к. сишные макросы позволяют задавать им произвольные значения, в т.ч. и строковые.
Для этого в настройку GCC_PREPROCESSOR_DEFINITIONS
записывается SERVER_URL=\"$(SERVER_URL)\"
(имя макроса с левой стороны можно выбрать любое), что делает доступным макрос SERVER_URL
в C коде, который превратится в строковый литерал.
Далее создаем пару .h/.m файлов, в которые поместим функцию (или класс, как душе угодно), возвращающую наш макрос в виде подходящего ObjC объекта:
NSURL *serverURL(void) {
return [NSURL urlWithString:@SERVER_URL];
}
В принципе, @
можно поместить и прямо в определение макроса. Также можно добавить_NonNull
для возвращаемого типа либо просто обернуть объявления в NS_ASSUME_NONNULL_BEGIN
/NS_ASSUME_NONNULL_END
в заголовочном файле.
Осталось поместить созданный заголовочный файл в bridging header — и Свифт код сможет увидеть функцию serverURL()
.
User-Defined в iOS проекте