是否可以实现自己的IASKSettingsReader?

时间:2011-11-16 14:54:58

标签: ios iphone core-data settings inappsettingskit

我使用核心数据来保存动态(小)数量的实体。这些实体具有“显示”和“推送”属性,我与每个实体的服务器同步。

现在我想添加InApp-Settings,以便用户可以在核心数据实体中更改这两个设置。

因为行为和外观应该像Settings.app一样,我想在这种情况下使用InAppSettingsKit-Project。

正如我读到的,这个库允许实现自定义SettingsStore来保存核心数据中的值,但我也需要从核心数据中读取实体和设置。在我看来,无法定义自己的子类IASKSettingsReader以供使用。

接下来的问题是,我想在顶层使用plist来显示主要设置,然后在设置的子级别上显示我自己的商店。

示例:

-> Display Settings (From plist)
--> List of entities with my own reader and store to show toggles
-> Push Settings (From plist)
--> List of entities with my own reader and store to show toggles 
-> Version (From plist)
-> About (From plist)

如果不从头开始编写整个设置(这会非常痛苦和不灵活),是否有可能实现这一目标?

感谢您提前让我走向正确的方向!

------ ------ EDIT

我认为一个可能的解决方案是,在app-start上以InAppSettingsKit所需的格式保存自定义plist,在子菜单中将它们作为此childpane的源读取,将自定义SettingsStore的设置保存到plist中并在同步方法中将数据保存回核心数据。

您如何看待这种方法?

2 个答案:

答案 0 :(得分:1)

您描述的方法听起来很合理。您必须调整逻辑来设置plist的路径(-locateSettingsFile:)。还应该可以编写IASKSettingsReader的替换来动态设置字段定义。或者,您可以直接修改IASKSettingsReader.dataSource属性(未经测试,只是一个想法)。

答案 1 :(得分:0)

我已经实现了我在编辑问题时描述的方法。

整个方法都是这样的:

  1. 使用来自我服务器的内容更新核心数据中的数据
  2. 在InAppSettings.bundle中的InAppSettingsKit类plist-Files中生成两个plist文件
  3. 实施了SettingsStoreCoreData SettingsStore。它使用init上的核心数据构建一个字典,并在调用synchronize时将它们保存回核心数据。
  4. 正如Ortwin Gentz所提到的,可以编写自己的IASKSettingsReader。但我认为我的方法需要更少的工作,我不需要在IASKSettingsKit中处理不同的源类型。