【问题标题】:Is it possible to implement a own IASKSettingsReader?是否可以实现自己的 IASKSettingsReader?
【发布时间】:2011-12-30 12:28:04
【问题描述】:

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

现在我想添加 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并在同步方法中将数据保存回核心数据。

您如何看待这种方法?

【问题讨论】:

    标签: ios iphone core-data settings inappsettingskit


    【解决方案1】:

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

    【讨论】:

    • 感谢您的意见。我已经实施了我的方法,并且效果很好。
    【解决方案2】:

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

    整个方法是这样工作的:

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

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

    【讨论】:

    • 作为我解决方案的补充:您不能在真实设备上的 InAppSettings.bundle 中写入文件。所以我编写了一个自定义设置阅读器,它在 InAppSettings.bundle、Settings.bundle 和应用程序文档目录中搜索 plist 文件,我在其中生成属性文件。但遗憾的是,无法将自己的 settingsreader 设置为 viewcontroller 上的 reader,因为当您打开设置屏幕的子视图时,它会被覆盖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2020-01-29
    • 2020-12-27
    • 2021-03-24
    相关资源
    最近更新 更多