2

我有我希望在设置中可用的用户设置,但前提是它是调试版本,或者它可能是两个单独的目标之一。

在设置包中,我在 Root.plist 中有该项目,但我希望它仅在它是调试版本时才可见。

有什么方法可以在设置包中设置条件吗?

我知道我可以为两个不同的构建目标使用单独的设置包,但这需要我维护两个单独的设置包,这看起来很混乱。

有任何想法吗?

4

4 回答 4

2

您可以拥有一个包含所有内容的 Settings.plist,然后为您不想公开其中一个设置的目标添加一个构建步骤。在该构建步骤中,使用PlistBuddy删除您不想要的设置。

这样做的好处是让您可以使用 Xcode 提供的强大工具来编辑您的 plist,同时保持 DRY。

于 2013-06-03T20:09:12.837 回答
0

在您的应用程序委托中,阅读 plist 并放入字典。然后为 DEBUG 构建使用编译时间标志,这会打开一些添加或修改 plist 转换字典的代码。从那时起不要直接访问 plist,通过应用程序委托中的方法与字典接口。

编辑:编写一些命令行级别的软件来获取您的标准 plist,并根据构建配置对其进行更改,然后将其作为 plist 输出,然后将其复制到您的应用程序包中,作为构建阶段。您可以使用标准的系统 cli 函数来执行此操作,或者如果您在自定义 mac cli 程序中执行此操作,则构建起来很简单。

于 2013-06-03T18:52:14.807 回答
0

据我所知,没有办法将条件(或者,就此而言,任何形式的代码)放在设置包中。您可以创建一个仅在调试模式或类似模式下显示的应用内设置页面。

于 2013-06-03T18:56:09.760 回答
0

编辑您的架构以将脚本作为构建预操作之一运行。该脚本可以生成 Root.plist 并酌情包含或不包含额外设置。尽管您可以为生成器脚本使用任何您想要的语言(Ruby、Tcl、Forth、...),但我只会使用 C 预处理器。

具体来说,

  1. 创建一个包含所有常规设置的文件 Root.plist.orig。将您的额外设置包含在#ifdef DEBUG#endif

  2. 在您的架构中创建构建运行脚本预操作。该脚本应包含一个运行预处理器的 shell 命令。所以像(我没有100%正确的细节): cpp -DDEBUG Root.plist.orig > Root.plist

于 2013-06-03T19:11:49.453 回答