2014-12-03 31 views
10

Mam zainstalowaną wtyczkę Xcode dla XcodeColors od robbiego hansona. (patrz https://github.com/robbiehanson/XcodeColors)Jak uzyskać zmienną środowiskową z Xcode w mojej aplikacji

Gdybym go przetestować na placu zabaw

let dict = NSProcessInfo.processInfo().environment 
let env = dict["XcodeColors"] as? String 

env będzie "TAK".

Ale jeśli użyję tego samego kodu w mojej aplikacji, env będzie zerowe, ponieważ aplikacja działa na własny proces.

Ponieważ wydrukowałbym kolorowy tekst z określonymi sekwencjami esc tylko wtedy, gdy wtyczka jest zainstalowana, chcę uzyskać informacje o Xcode env var.

Jak mogę to zrobić?

+0

jestem posiadające taki sam problem. Czy znalazłeś rozwiązanie? – Tiago

Odpowiedz

12

Edytuj swój schemat -> Wybierz sekcję "Uruchom" -> Wybierz zakładkę "Argumenty" -> Dodaj zmienną środowiskową.

Uważaj, zmienne środowiskowe nie są ustawione, jeśli uruchomisz aplikację bez kodu X.

+0

dzięki, takie podejście też wykorzystałem. Ale jeśli udostępnię moje źródło innemu programistce, muszę wyjaśnić, co należy zrobić, po zainstalowaniu XcodeColors. Chcę zrobić to automatycznie z mojej aplikacji. – MUECKE446

+0

Zauważ, że Xcode nie jest uruchamiane przez BASH, więc zdefiniowane tutaj środowisko działa tylko w Xcode. – Efren

+0

Zobacz także przydatny blog z NSHipster na temat dostępnych ustawień środowiska: http://nshipster.com/launch-arguments-and- environment-variables/ – Efren

2

Wpadłem na ten sam problem z XcodeColors. Skończyło się na tym, że rozwiązałem go z prostą fazą tworzenia skryptu. Sprawdza, czy XcodeColors jest zainstalowany czy nie i ustawia/dodaje klucz do Info.plist w kompilacji. Więc utworzyć nowy „Run Script Budowanie Phase” i umieścić to w tam:

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 

Następnie można uzyskać dostęp do param Info.plist podczas wykonywania coś jak:

func isColorizedLoggingEnabled() -> Bool { 
    if let colorizedLoggingEnabled = NSBundle.mainBundle().infoDictionary?["XcodeColorsInstalled"] as? Bool { 
     return colorizedLoggingEnabled 
    } else { 
     return false 
    } 
} 
Powiązane problemy