2010-07-23 2 views
30

У моего проекта есть несколько целей. Каждая цель имеет свой собственный файл Class для настройки материала. Я хочу сохранить это имя Class в целевой настройке (Info.plist или настройке объекта Target). Чтобы я мог определить, какой класс мне нужно использовать в каждой цели на основе этого параметра.iphone: получить переменную User Defined в настройке Target по коду?

В соответствии с this question я помещаю «целевую переменную User Defined» в каждой настройке объекта цели.

Но не знаете, как вернуть его в свой код?

+0

какой целевой параметр вы имеете в виду? Настройки сборки? Info.plist? Где вы установили переменную? – tonklon

+0

Я положил его в настройку сборки цели. – KONG

ответ

65

Как Info.plist файл предобработан тоже, вы можете использовать этот подход:

Определить определенный параметр пользователя в настройках сборки , для примера CLASS_NAME. И ключ к вашему файлу Info.plist. Назовите ключ CLASS_NAME и установите значение ${CLASS_NAME}.

Вы можете получить доступ к этой настройки:

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"]; 
9

Вы не можете напрямую использовать переменную, определенную в настройках сборки. Эти переменные предназначены для использования инструментами построения.

Вместо этого определите макрос препроцессора в переменной макросов препроцессора, как «MYVAR = 5». Вы можете получить доступ к этим макросы в коде, как:

#if MYVAR==5 
    //Do something 
#endif 

Пожалуйста, обратите внимание, что оценка этих выражений происходит при построении время не во время выполнения.

Это очень типичное использование, чтобы просто определить макрос, не заботясь о стоимости. Например, определите «DEBUG = 1» в настройках сборки отладки и «RELEASE = 1» в настройках сборки релиза.

Вы можете проверить с помощью #ifdef или #ifndef

#ifdef DEBUG 
    // Log 
#endif 
+0

О, я вижу. Как насчет Info.plist. Могу ли я сохранить имя класса и получить его из кода? – KONG

+0

Я добавил еще один ответ: для использования info.plist. – tonklon

+4

Если я хорошо понимаю, невозможно сразу получить значение настроек сборки. Потому что для секретов и ключей (которые изменяются для каждой конфигурации) было бы лучше не проходить через Plist. – Rivera