2010-09-16 5 views
30

Ich definiere eine Pfadvariable im Xcode-Quellbaum mit dem Namen "MY_SRC_DIR". Ich möchte den Wert dieser Umgebungsvariable erhalten und sie in einen NSString im obj-c-Code einfügen. Zum BeispielWie auf eine Umgebungsvariable im Obj-C-Code verwiesen wird

-(NSString*) getSourceDir 

{ 

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

} 

Antwort

57

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

[[NSProcessInfo processInfo] environment] gibt eine NSDictionary der aktuellen Umgebung.

Zum Beispiel:

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

BUZZZ: Falsche Antwort; Diese Methode gibt die Umgebungsvariablen zur Laufzeit zurück. Die Frage bezieht sich auf den Zugriff auf eine Umgebungsvariable, die zur (Xcode) -Bauzeit existiert. – geowar

+18

Vielleicht die falsche Antwort für die Frage des OP, aber die richtige Antwort für mich! Vielen Dank!! –

+0

Wie kann ich die Werte dieser Variablen aus Xcode anzeigen? – vijayst

-4

Die beste Antwort auf diese Frage ist die akzeptierte Antwort auf diese Frage.

Constants in Objective-C

Sie werden die meisten Kilometer erhalten, und werden spezielle Methoden nicht brauchen, so lange den Wert, den Sie suchen zu erhalten, wie Sie die Datei in dem, was .h/.m-Datei importieren ist werde diesen Wert verbrauchen.

+0

+1 für den von Ihnen geposteten Link –

6

Der einzige Weg, die ich gefunden habe ein Build-Zeit-Umgebungsvariable zu erhalten, wie eine Zeichenkette, die es in einem Wörterbuch Elemente wie folgt zu setzen ist:

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

und es dann wie folgt ab:

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

Dies ist eine korrekte Antwort.Es wäre ideal, einen Weg zu finden, es ohne das Info-Wörterbuch zu tun. Aber ist das möglich? –

+0

Dies verwendet immer noch das PLIST, aber zumindest können Sie es zur Build-Zeit ändern. Siehe http://stackoverflow.com/questions/15361202/add-date-to-xcode-xcconfig-file –

+0

Handy Tipp. Ermöglicht die Verwendung einer in einer .xcconfig-Datei definierten Zeichenfolge, die sowohl zur Laufzeit als auch in Buildphase-Skripts/etc Build-spezifisch ist. –

11

ist ein weiterer Weg, es zu tun:

.xcconfig Datei:

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

Ziel C-Code:

#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 

Console Ausgabe - ich habe den Müll von NSLog gezupft:

FIRST_PRESIDENT is NOT defined 
MACRO_FIRST_PRESIDENT is Washington, George 
21

einfach die gewünschten var in die Bereitstellung von Umgebungsvariablen Liste Ihrer aktuellen Xcode aussetzen Scheme und Sie können es zur Laufzeit wie folgt abrufen:

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

Es gilt auch für Swift ba sed Projekte.

Adding Xcode Build Setting Var to Environment var

Hoffe, es hilft !! :]

Verwandte Themen