ios - 根据目标加载不同的 plist

标签 ios objective-c xcode c-preprocessor plist

我认为尝试使用相同的代码库构建多个应用程序会很有趣,其中唯一的区别数据保存在几个 plist 中。例如,一个 plist 包含一些主题信息 - 一些用于驱动应用程序中使用的配色方案的键/值。我将调用此 theme.plist 的原始版本。

我很快了解到我应该在我的项目中创建多个目标,并且已经能够成功添加这些目标。每个应用程序都通过其自己的 appname-info.plist 拥有不同的名称和捆绑 ID - 在我的主屏幕上看到这三个应用程序,无需任何真正的额外工作,这真是太棒了。

但现在它们都是相同的。我还没弄清楚如何为每个数据使用一组不同的数据。

我的第一个想法是为每个目标创建一些文件夹 - 每个目标都有自己的主题 plist,名为 theme.plist - 并以某种方式将每个目标分配到不同的文件夹。但研究这个想法并没有给我带来太多谷歌资源。

那么多个主题文件呢?好的,到目前为止看起来更好 - 我可以创建一个 app1-theme.plist 和 'app2-theme.plist',每个中的相同键具有不同的值。 Xcode 甚至允许我使用一些标志来说明哪些目标应包含每个资源。

但我不知道如何在运行时加载适当的plist。我需要检查某些内容(包 ID?),然后将主题 plist 的适当名称分配给某些内容(什么)?

看起来这可能与#ifdef有关,无论是什么......?

有人可以解释我应该如何实现这一目标吗?我走在正确的轨道上吗?我很高兴能花一些阅读时间,但我什至还不知道要查找什么。

最佳答案

你就在那里。 Xcode 支持在一个项目中拥有多个同名文件,您可以通过将它们存储在项目文件夹内的不同文件夹中来实现此目的。

不幸的是,此时 Xcode 不会为您提供太多帮助,因此在 Finder 中打开您的项目,为每个应用程序创建一个子文件夹,在这些文件夹中放置 plist 的副本。现在依次将每个副本添加到您的项目中,确保将每个副本仅添加到您的一个目标中。

您可能想在 Xcode 中创建一个名为“主题文件”的组,以将它们保存在一起。

HTH

关于ios - 根据目标加载不同的 plist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039103/

相关文章:

ios - 访问字典对象时出错

iPhone 在视频播放后强制方向

ios - xcode中的已读和未读消息

Xcode Bots 不会在成功/失败时发送电子邮件

ios - 为 uinavigationcontroller 堆栈上的每个 View Controller 创建关闭按钮

ios - UILabel - 如何在 Swift 3 中的行之间添加空格

objective-c - 将对象编码/解码到字典的最优雅的方法是什么

mysql - 如何将数组插入sqlitedatabase列以及如何在Uitableview单元格中显示

c++ - OpenCV,XCode 中的链接错误,体系结构 x86_64 的 undefined symbol : "_cvHaarDetectObjects", 从 : _main in main. o 引用

ios - AVSpeechUtterance 作为 UILocalNotification 声音