我正在尝试使用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键的双向绑定。任何帮助将不胜感激!