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

Как ссылаться на переменную окружения внутри кода Obj-C

Я определяю переменную пути в дереве исходного кода Xcode, называемом "MY_SRC_DIR". Я хотел бы получить значение этой переменной среды и поместить ее в NSString в obj-c-коде. Например,

-(NSString*) getSourceDir

{

    return @"${MY_SRC_DIR}"; // not the right solution and this is the question

}
4b9b3361

Ответ 2

Просто выведите желаемый var в список переменных окружения текущей схемы развертывания Xcode, и вы сможете получить его во время выполнения следующим образом:

NSString *buildConfiguration = [[NSProcessInfo processInfo] environment][@"BUILD_CONFIGURATION"];

Он также применим к проектам, основанным на быстрой работе.

Adding Xcode Build Setting Var to Environment var

Надеюсь, это поможет!:]

Ответ 3

Вот еще один способ сделать это:

.xcconfig файл:

FIRST_PRESIDENT = '@"Washington, George"'
GCC_PREPROCESSOR_DEFINITIONS = MACRO_FIRST_PRESIDENT=$(FIRST_PRESIDENT)

объективный код C:

#ifdef FIRST_PRESIDENT
    NSLog(@"FIRST_PRESIDENT is defined");
#else
    NSLog(@"FIRST_PRESIDENT is NOT defined");
#endif
#ifdef MACRO_FIRST_PRESIDENT
    NSLog(@"MACRO_FIRST_PRESIDENT is %@", MACRO_FIRST_PRESIDENT);
#else
    NSLog(@"MACRO_FIRST_PRESIDENT is undefined, sorry!");
#endif

Консольный выход - я удалил мусор из NSLog:

FIRST_PRESIDENT is NOT defined
MACRO_FIRST_PRESIDENT is Washington, George

Ответ 4

Единственный способ, по которому я нашел переменную среды времени сборки в виде строки, - это поместить ее в элемент словаря следующим образом:

<key>Product Name</key>
<string>$PRODUCT_NAME</string>

а затем восстановить его следующим образом:

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* productName = infoDict[@"Product Name"];
NSLog(@"Product Name: %@", productName);

Ответ 5

Лучший ответ на этот вопрос - это принятый ответ на этот вопрос.

Константы в Objective-C

Вы получите максимальный пробег и не будете нуждаться в каких-либо специальных методах для получения значения, которое вы ищете до тех пор, пока вы импортируете файл в любой файл .h/.m, который будет потреблять указанное значение.