双向绑定到UserDefaults

时间:2017-10-10 16:13:56

标签: ios reactivekit swiftbond

我正在尝试使用ReactiveKit / Bond创建双向绑定。我试图在我的View模型上创建绑定到UserDefaults,但我无法弄清楚如何实现这一点。我尝试使用带有返回DynamicSubject2<T, NoError>的keyPath的reactive,但是当我在View Model上设置属性并使用View Controller的双向绑定时,它实际上并不创建双向绑定。我实际上根本无法分辨它在做什么,但数据没有流向UserDefaults。它似乎只是从UserDefaults到View Model到View Controller的一种方式

SettingsViewModelType(视图模型的协议)

protocol SettingsViewModelType {
  var useMetric: DynamicSubject<Bool> { get }
}

视图模型的初始化方法

init(userDefaults: UserDefaults = UserDefaults.standard)
{
  self.userDefaults = userDefaults

  useMetric = self.userDefaults.reactive.keyPath("useMetric", ofType: Bool.self, context: .immediateOnMain)
}

我也尝试过使用会返回动态主题的方法,让你覆盖getter和setter,但是我无法弄清楚信号到底应该是什么。

useMetric = userDefaults
  .reactive
  .dynamicSubject(signal: <What is the Signal?> , context: .immediateOnMain, get: { (defaults) -> Bool in
      return defaults.value(forKey: "useMetric") as! Bool
    }) { (defaults, value) in
      defaults.set(value, forKey: "useMetric")
    }

我确定必须有一种方法来设置我想要的UserDefaults键的双向绑定。任何帮助将不胜感激!

0 个答案:

没有答案