Sup*_*Cat 34 xcode objective-c
如果我在构建配置中添加了用户定义的设置,我如何在Objective-C代码中读取该设置?
我的项目中有两个文件,debug.plist并且release.plist.我希望我MainApp.m的文件根据正在运行的构建配置读取其中一个文件.我在Debug和Release配置中设置了一个名为"filename"的用户定义设置,指向相应的文件.但我不知道我的MainApp.m文件如何从当前运行的配置中读取filename变量.
zmi*_*pie 38
这就是我所做的,我不能100%确定这是你所追求的:
创建用户定义的设置,例如:
MY_LANG -> en_us
Run Code Online (Sandbox Code Playgroud)然后,在预处理器宏的设置中,您可以引用该值:
LANGCODE="$(MY_LANG)"
Run Code Online (Sandbox Code Playgroud)现在,您可以在所有源文件中引用LANGCODE,它将是您在自定义构建设置中填写的任何内容.我意识到这里存在一定程度的间接,但在我的情况下这是故意的:我的XCode项目包含一堆具有自己的预处理器宏的不同目标/配置.我不想进入所有这些,只是为了更改语言代码.实际上,我在项目级别定义了语言代码.我也在几个脚本中使用MY_LANG,所以只是预处理器宏不会这样做.可能有一种更聪明的方式,但这对我有用.
And*_*per 15
您可以在运行时访问用户定义的构建设置(如@JWWalker的评论中所示)
在Info.plist文件中添加一个条目,并将其设置为用户定义的构建设置
MySetting -> ${MYSETTING}
Run Code Online (Sandbox Code Playgroud)从代码中读取它的值
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"MySetting"];
Run Code Online (Sandbox Code Playgroud)JWW*_*ker 10
您的代码无法读取任意构建设置.您需要使用预处理器宏.
编辑:例如,在调试配置的目标设置中,您可以添加DEBUGGING=1预处理器宏构建设置,而不是在发布配置中定义DEBUGGING.然后在您的源代码中,您可以执行以下操作:
#if DEBUGGING
use this file
#else
use the other one
#endif
Run Code Online (Sandbox Code Playgroud)
Kri*_*ian 10
斯威夫特4
让我们说"filename"是你的应用程序中需要的String.
将filename = YOUR_STRING添加到用户定义的设置(用于调试和发布).
并将filename = $(filename)添加到info.plist.
然后在Swift代码中:
let filename = Bundle.main.infoDictionary?["filename"] as! String
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35321 次 |
| 最近记录: |