2011-11-16 124 views
0

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

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

是否有可能实现这一目标,而不从头开始编写整个设置(这将是非常痛苦的,不易伸缩的)?

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

------编辑------

我认为,一个可能的解决办法是,以保存自定义的plist在InAppSettingsKit上的应用程序启动所需要的格式,在阅读作为该子窗格源的子菜单,将自定义SettingsStore的设置保存到plist中,并将数据保存回同步方法中的核心数据。

您对这种方法有什么看法?

回答

0

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

整个方法效果是这样的:

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

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

+0

作为我的解决方案的补充:您无法在真实设备上的InAppSettings.bundle中写入文件。所以我写了一个自定义设置阅读器,用于在InAppSettings.bundle,Settings.bundle和应用程序文档目录中搜索plist文件,在那里生成属性文件。但令人遗憾的是,无法将自己的设置阅读器设置为视图控制器上的阅读器,因为当您打开设置屏幕的子视图时,它将被覆盖。 –

1

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

+0

感谢您的输入。我已经实施了我的方法,它的工作非常完美。 –