绑定剂量似乎不适用于 ReactiveCocoa Swift

Binding dose not seem to be working from ReactiveCocoa Swift

var viewModel = CTCViewModel()
var mainView: CTCMainView {
    return self.view as! CTCMainView
}

override func viewDidLoad() {
    super.viewDidLoad()

    let callButtonEnabledSignal = self.viewModel.rac_valuesForKeyPath("callButtonEnabled", observer: self.viewModel)
    callButtonEnabledSignal.setKeyPath("enabled", onObject: self.mainView.callButton, nilValue: false)

    self.mainView.callButton.rac_signalForControlEvents(UIControlEvents.TouchUpInside).subscribeNext {
        (Void) -> Void in
        self.viewModel.callButtonEnabled = !self.viewModel.callButtonEnabled
    }
}

当我按下按钮时,self.viewModel.callButtonEnabled 确实得到了更新,但是按钮的 enabled 属性 得到了更新。好像没有绑定。

在您的 callButtonEnabled 属性 上添加 dynamic

class CTCViewModel: NSObject {
    dynamic var callButtonEnabled = false
}

因为 rac_valuesForKeyPath 的实现是使用 Objective-C 运行时,编译器在访问 Swift 属性时可以忽略它。您将 属性 标记为 dynamic 让编译器始终使用 Objective-C 运行时。