Ответ 1
Измените свою схему → Выберите раздел "Выполнить" → Выберите вкладку "Аргументы" → Добавить переменную среды.
Будьте осторожны, переменные окружения не установлены, если вы запускаете приложение без XCode.
Я установил плагин Xcode для XcodeColors от robbie hanson. (см. https://github.com/robbiehanson/XcodeColors)
Если я тестирую его на игровой площадке
let dict = NSProcessInfo.processInfo().environment
let env = dict["XcodeColors"] as? String
env будет "YES".
Но, если я использую тот же код в своем приложении, env будет нуль, потому что приложение работает в собственном процессе.
Поскольку я печатал цветной текст с определенными последовательностями esc, только если плагин установлен, я хочу получить информацию о Xcode env var.
Как я могу это сделать?
Измените свою схему → Выберите раздел "Выполнить" → Выберите вкладку "Аргументы" → Добавить переменную среды.
Будьте осторожны, переменные окружения не установлены, если вы запускаете приложение без XCode.
Я столкнулся с той же проблемой с XcodeColors. Я закончил его с простой фазой сборки script. Он проверяет, установлен ли XcodeColors или нет, и устанавливает/добавляет ключ в Info.plist в сборке. Итак, создайте новую "Run script Build Phase" и поставьте ее там:
xcodeColorsDir="$USER_LIBRARY_DIR/Application Support/Developer/Shared/Xcode/Plugins/XcodeColors.xcplugin/"
xcodeColorsInstalled=0
if [ -d "$xcodeColorsDir" ]; then
# Directory exists, therefore, XcodeColors is installed
xcodeColorsInstalled=1
fi
infoPlistPath="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
existingValue=$(/usr/libexec/PlistBuddy -c "Print :XcodeColorsInstalled" "$infoPlistPath")
if [ -z "$existingValue" ]; then
# Key already exists so overwrite it
/usr/libexec/PlistBuddy -c "Add :XcodeColorsInstalled bool $xcodeColorsInstalled" "$infoPlistPath"
else
# Key doesn't exist yet
/usr/libexec/PlistBuddy -c "Set :XcodeColorsInstalled $xcodeColorsInstalled" "$infoPlistPath"
fi
Затем вы можете получить доступ к параметру Info.plist во время выполнения с чем-то вроде:
func isColorizedLoggingEnabled() -> Bool {
if let colorizedLoggingEnabled = NSBundle.mainBundle().infoDictionary?["XcodeColorsInstalled"] as? Bool {
return colorizedLoggingEnabled
} else {
return false
}
}