【发布时间】:2013-12-01 02:10:33
【问题描述】:
我认为尝试使用相同的代码库构建多个应用程序会很有趣,其中唯一的区别数据保存在几个 plist 中。例如,一个 plist 包含一些主题信息 - 一些键/值来驱动应用程序中使用的配色方案。我会调用这个theme.plist的原始版本。
我很快就知道我应该在我的项目中创建多个目标,并且能够成功添加这些目标。每一个,通过它自己的 appname-info.plist,都有不同的名称和包 ID - 在我的主屏幕上看到这三个都很好,没有任何真正的额外工作。
但现在它们都是相同的。我还没有弄清楚如何为每个数据使用不同的数据集。
我的第一个想法是为每个目标设置一些文件夹——每个目标都有自己的主题 plist,名为 theme.plist——并以某种方式将每个目标分配到不同的文件夹。但是研究这个想法并没有让我得到太多的谷歌果汁。
那么多个主题文件呢?好的,到目前为止看起来更好 - 我可以创建一个 app1-theme.plist 和 'app2-theme.plist' ,每个中的相同键具有不同的值。 Xcode 甚至允许我使用一些标志来说明哪些目标应该包含每个资源。
但我不知道如何在运行时加载适当的 plist。我需要检查某些东西(捆绑 ID?),然后将主题 plist 的适当名称分配给某些东西(什么)?
看起来这可能与#ifdef 有关,不管那可能是什么......?
有人能解释一下我应该如何实现这一目标吗?我在正确的轨道上吗?我很高兴花一些时间阅读,但我什至不知道该查找什么。
【问题讨论】:
-
自写作以来我就想到了一个想法——也许我可以有一些便利类(类似于 Constants.h,但具有派生属性)来检查包 ID 并返回相关的 plist 路径。然后确保在整个应用程序中我始终使用 kThemePlistPath(例如)?
标签: ios objective-c xcode c-preprocessor plist