我正在尝试使用 ReactiveKit/Bond 创建双向绑定。我正在尝试在我的视图模型上创建与 UserDefaults 的绑定,但我无法弄清楚如何实现这一点。我尝试对返回 a 的 keyPath 使用响应式,DynamicSubject2<T, NoError>
但是当我在 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 键的双向绑定。任何帮助将不胜感激!