Можно ли реализовать собственный IASKSettingsReader? - PullRequest
0 голосов
/ 16 ноября 2011

Я использую данные ядра для сохранения динамического (небольшого) количества объектов. Эти объекты имеют свойство «Отображать» и «Push», которые я синхронизирую с моим сервером для каждого объекта.

Теперь я хочу добавить InApp-Settings, чтобы дать пользователю возможность изменить эти две настройки в основном объекте данных.

Поскольку поведение и внешний вид должны быть похожи на Settings.app, я хочу использовать InAppSettingsKit-Project для этого случая.

Пока я читаю, эта библиотека позволяет реализовать пользовательское хранилище настроек для сохранения значений в основных данных, но мне нужно также прочитать сущности и настройки из основных данных. На мой взгляд, невозможно определить собственный подкласс 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 при запуске приложения, чтение их в подменю в качестве источника для этой дочерней панели, сохранение настроек с помощью пользовательского хранилища настроек в списке. и сохраните данные обратно в основные данные в методе синхронизации.

Что вы думаете об этом подходе?

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Подход, который вы описали, звучит разумно.Вам, однако, придется настроить логику, чтобы задать путь к списку (-locateSettingsFile:).Также должна быть возможность написать замену для IASKSettingsReader для динамической установки определений полей.В качестве альтернативы, вы можете изменить свойство IASKSettingsReader.dataSource напрямую (не проверено, просто идея).

0 голосов
/ 17 ноября 2011

Я применил подход, который я описал при редактировании вопроса.

Весь подход работает следующим образом:

  1. Обновление данных в основных данных содержимым с моего сервера
  2. Создание двух файлов plist в файлах, похожих на InAppSettingsKit, в файле InAppSettings.bundle
  3. Реализован SettingsStoreCoreData SettingsStore. Он создает словарь со значениями из базовых данных в init и сохраняет их обратно в базовые данные при вызове синхронизации.

Как уже упоминал Ортвин Генц, можно написать собственный IASKSettingsReader. Но я думаю, что мой подход требует меньше работы, и мне не приходится иметь дело с различными типами источников в IASKSettingsKit.

...