2010-09-16 7 views

Odpowiedz

57

Od http://rosettacode.org/wiki/Environment_variables#Objective-C:

[[NSProcessInfo processInfo] environment] zwraca NSDictionary bieżącego środowiska.

Na przykład:

[[[NSProcessInfo processInfo] environment] objectForKey:@"MY_SRC_DIR"] 
+8

BUZZZ: Zła odpowiedź; ta metoda zwróci zmienne środowiskowe w czasie wykonywania. Pytanie dotyczy dostępu do zmiennej środowiskowej istniejącej w czasie kompilacji (Xcode). – geowar

+18

Być może zła odpowiedź na pytanie OP, ale właściwa odpowiedź dla mnie! Dzięki!! –

+0

Jak mogę wyświetlić wartości tych zmiennych z Xcode? – vijayst

-4

Najlepszą odpowiedzią na to pytanie jest akceptowane odpowiedź na to pytanie.

Constants in Objective-C

Dostaniesz najwięcej kilometrów, i nie trzeba żadnych specjalnych metod, aby uzyskać wartość szukasz tak długo, jak zaimportować plik do jakiegokolwiek .h/.m jest plik zamierzam skonsumować wspomnianą wartość.

+0

+1 za opublikowany link –

6

Jedynym sposobem znalazłem uzyskać zmienną środowiskową czas budowy jako ciąg jest, aby umieścić go w słowniku elementu tak:

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

a następnie pobrać je tak:

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

To jest poprawna odpowiedź.Byłoby idealnie znaleźć sposób, aby to zrobić bez słownika informacji. Ale czy to możliwe? –

+0

Nadal używa się plist, ale przynajmniej można go zmienić w czasie kompilacji. Zobacz http://stackoverflow.com/questions/15361202/add-date-to-xcode-xcconfig-file –

+0

Poręczna wskazówka. Umożliwia użycie łańcucha zdefiniowanego w pliku .xcconfig, który jest konfigurowany specyficznie zarówno w środowisku wykonawczym, jak i skryptach budowania/etc. –

11

Oto kolejny sposób, aby to zrobić:

plik .xcconfig:

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

celem kod 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 

wyjście Console - Mam pozbawione śmieci z NSLog:

FIRST_PRESIDENT is NOT defined 
MACRO_FIRST_PRESIDENT is Washington, George 
21

Wystarczy odsłonić żądany var do listy Zmienne środowiskowe aktualnego rozmieszczenia w Xcode Scheme i będziesz w stanie go odzyskać w czasie pracy w następujący sposób:

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

Obowiązuje również dla szybkiego projekty sed.

Adding Xcode Build Setting Var to Environment var

Nadzieja pomaga !! :]