36 iphone xcode environment-variables
我在Xcode源代码树中定义了一个名为"MY_SRC_DIR"的路径变量.我想获取此环境变量的值,并将其放在obj-c代码中的NSString中.例如,
-(NSString*) getSourceDir
{
return @"${MY_SRC_DIR}"; // not the right solution and this is the question
}
Run Code Online (Sandbox Code Playgroud)
hig*_*ted 63
来自http://rosettacode.org/wiki/Environment_variables#Objective-C:
[[NSProcessInfo processInfo] environment] 返回当前环境的NSDictionary.
例如:
[[[NSProcessInfo processInfo] environment] objectForKey:@"MY_SRC_DIR"]
Run Code Online (Sandbox Code Playgroud)
Dav*_*dez 27
只需将所需的var公开到当前Xcode部署Scheme的Environment Variables列表中,您就可以在运行时检索它,如下所示:
NSString *buildConfiguration = [[NSProcessInfo processInfo] environment][@"BUILD_CONFIGURATION"];
Run Code Online (Sandbox Code Playgroud)
它也适用于基于swift的项目.

希望能帮助到你!!:]
Wil*_*sch 14
这是另一种方法:
.xcconfig文件:
FIRST_PRESIDENT = '@"Washington, George"'
GCC_PREPROCESSOR_DEFINITIONS = MACRO_FIRST_PRESIDENT=$(FIRST_PRESIDENT)
Run Code Online (Sandbox Code Playgroud)
目标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
Run Code Online (Sandbox Code Playgroud)
控制台输出 - 我从NSLog中删除了垃圾:
FIRST_PRESIDENT is NOT defined
MACRO_FIRST_PRESIDENT is Washington, George
Run Code Online (Sandbox Code Playgroud)
我发现将构建时环境变量作为字符串获取的唯一方法是将它放在这样的字典元素中:
<key>Product Name</key>
<string>$PRODUCT_NAME</string>
Run Code Online (Sandbox Code Playgroud)
然后像这样检索它:
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* productName = infoDict[@"Product Name"];
NSLog(@"Product Name: %@", productName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19555 次 |
| 最近记录: |