iPhone:如何通过代码获取目标设置中的用户定义变量?

32
我的项目有多个目标。每个目标都有自己的Class文件用于设置内容。我想将该Class名称存储在一个目标设置中(Info.plist或目标的构建设置),以便我可以根据此设置在每个目标中定义需要使用的类。
根据这个问题,我在每个目标的构建设置中放置了“特定于目标的User Defined变量”。
但是不知道如何在我的代码中获取它?

你指的是哪个目标设置?构建设置?Info.plist?你在哪里设置了这个变量? - tonklon
我把它放在目标的构建设置中。 - KONG
2个回答

69

由于 Info.plist 文件也被预处理,因此您可以使用以下方法:

在构建设置中定义一个用户定义设置,例如 CLASS_NAME。 然后将一个键添加到您的 Info.plist 文件中。将键命名为 CLASS_NAME,并将值设置为 ${CLASS_NAME}

然后,您可以通过以下方式访问此设置:

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];

10

你不能直接使用在构建设置中定义的变量,这些变量是供构建工具使用的。

相反,可以在预处理器宏变量中定义一个预处理器宏,例如'MYVAR=5'。在代码中可以像这样访问这些宏:

#if MYVAR==5
    //Do something
#endif
请注意,这些表达式的求值发生在编译时而不是运行时。
通常情况下,只需定义一个宏而不关心其值就足够了。例如,在调试构建设置中定义'DEBUG=1',在发布构建设置中定义'RELEASE=1'。
然后可以使用#ifdef或#ifndef进行测试。
#ifdef DEBUG
    // Log
#endif

哦,我明白了。那 Info.plist 怎么样?我可以在那里存储 Class 名称,并从代码中获取它吗? - KONG
我已经添加了另一个答案,介绍如何使用info.plist。 - tonklon
4
如果我理解正确的话,没有直接获取构建设置值的方法?因为对于每个配置都会发生更改的机密和密钥而言,最好不要通过Plist传递。 - Rivera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接