iphone:通过代码在 Target 的设置中获取用户定义的变量?

Posted

技术标签:

【中文标题】iphone:通过代码在 Target 的设置中获取用户定义的变量?【英文标题】:iphone: get User Defined variable in Target's setting by code? 【发布时间】:2011-03-19 23:31:42 【问题描述】:

我的项目有多个目标。每个目标都有自己的Class 文件用于设置内容。我想将该 Class 名称存储在目标设置中(Info.plist 或 Target 的 Building 设置)。这样我就可以根据这个设置定义我需要在每个目标中使用哪个类。

根据this question,我在每个Target的Building Setting中放入了“一个target-specific User Defined变量”。

但不知道如何在我的代码中找回它?

【问题讨论】:

你是指哪个目标设置?构建设置? Info.plist?你在哪里设置变量? 我把它放在了Target的Build Setting中。 【参考方案1】:

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

在您的构建设置中定义用户定义的设置,例如 CLASS_NAME。 以及您的 Info.plist 文件的密钥。将键命名为 CLASS_NAME 并将值设置为 $CLASS_NAME

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

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

【讨论】:

【参考方案2】:

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

而是在预处理器宏变量中定义一个预处理器宏,例如“MYVAR=5”。您可以在代码中访问这些宏,例如:

#if MYVAR==5
    //Do something
#endif

请注意,这些表达式的计算发生在构建时而不是运行时。

只定义宏而不关心值是非常典型的用法。例如,在调试构建设置中定义“DEBUG=1”,在发布构建设置中定义“RELEASE=1”。

然后您可以使用#ifdef 或#ifndef 进行测试

#ifdef DEBUG
    // Log
#endif

【讨论】:

哦,我明白了。 Info.plist 怎么样。我可以将Class 名称存储在那里,然后从代码中获取吗? 我已经添加了另一个答案,关于如何使用 info.plist。 如果我理解得很好,没有办法直接检索构建设置值吗?因为对于秘密和密钥(根据配置更改)最好不要通过 Plist。

以上是关于iphone:通过代码在 Target 的设置中获取用户定义的变量?的主要内容,如果未能解决你的问题,请参考以下文章

TARGET_OS_IPHONE 和 ApplicationTests

如何从iphone中的货币代码中获取货币符号?

哪个条件编译用于在 Mac 和 iPhone 特定代码之间切换?

如何从 iPhone 中的货币代码中获取货币符号?

如何在iPhone中创建带有小时和秒钟自定义图像的数字时钟?

如何在php中获得下个月的同一天