如何从Swift视图模型绑定到Obj-c视图控制器?

时间:2016-06-28 21:16:23

标签: ios objective-c swift reactive-programming reactive-cocoa

我正在使用ReactiveCocoa 4.1.0,我正在将(新)Swift视图模型与(传统)Obj-c视图控制器连接起来。我在使用RACObserve从视图模型中观察String属性时遇到问题。我无法使用MutableProperty,因为视图控制器位于Obj-c中。 RACObserve subscribeNext在首次设置属性时触发一次,但在更改它们之后,似乎没有信号触发。我基本上有:

在View Controller中:

[RACObserve(self.viewModel, buttonTitle) subscribeNext:^(NSString *title) {
    // Do something
    }];

在视图模型中:

init() {
   self.buttonTitle = "Original Value"
}
func foo() {
   self.buttonTitle = "Changed Value"
}

即使将更改放入Signal Producer并使用observeOn(UIScheduler()).start()

进行观察,我看到了原始值的火,但从未看到更改的值

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要确保通过KVO观察到的任何财产都被标记为dynamic

答案 1 :(得分:0)

RACObserve基于KVO。如果你想在swift中使用KVO,那么类应该继承NSObject类。 KVOImplementation

正如@David Rodrigues所说:

dynamic var buttonTitle: String?