0

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

现在我想添加 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)

是否有可能在不从头开始编写整个设置的情况下实现这个目标(这会非常痛苦和不灵活)?

感谢您提前将我引向正确的方向!

- - - 编辑 - - -

我认为一个可能的解决方案是,在应用程序启动时以 InAppSettingsKit 所需的格式保存自定义 plist,在子菜单中将它们作为此子窗格的源读取,将带有自定义 SettingsStore 的设置保存到 plist 中并保存同步方法中的数据返回核心数据。

您如何看待这种方法?

4

2 回答 2

1

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

于 2011-11-17T11:37:59.223 回答
0

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

整个方法是这样工作的:

  1. 使用我的服务器中的内容更新核心数据中的数据
  2. 在 InAppSettings.bundle 中的 InAppSettingsKit-like plist-Files 中生成两个 plist 文件
  3. 实现了一个 SettingsStoreCoreData SettingsStore。它使用 init 上的核心数据中的值构建一个字典,并在调用同步时将它们保存回核心数据。

正如 Ortwin Gentz 所提到的,可以编写自己的 IASKSettingsReader。但我认为我的方法需要较少的工作,而且我不必在 IASKSettingsKit 中处理不同的源类型。

于 2011-11-17T14:01:10.977 回答