Ios 如何使用ReactiveCocoa 4.0和MVVM实现双向绑定
我在一个使用被动Cocoa 4.0和MVVMswift 2.0的项目中工作。在视图模型中,我有一个字符串,它将根据textfield的更改进行更新,但如果字符串更改,我需要更新该textfield。textfield和stringageString之间是否可以进行双向绑定Ios 如何使用ReactiveCocoa 4.0和MVVM实现双向绑定,ios,swift,reactive-cocoa,reactive-cocoa-4,Ios,Swift,Reactive Cocoa,Reactive Cocoa 4,我在一个使用被动Cocoa 4.0和MVVMswift 2.0的项目中工作。在视图模型中,我有一个字符串,它将根据textfield的更改进行更新,但如果字符串更改,我需要更新该textfield。textfield和stringageString之间是否可以进行双向绑定 txtAge.rac_textSignal() ~> RAC(objViewModel, "ageString") 在RAC 2.x之前,您可以使用RACChannel,它提供了此功能,您可以订阅每个通道终端,并在新值
txtAge.rac_textSignal() ~> RAC(objViewModel, "ageString")
在RAC 2.x之前,您可以使用RACChannel,它提供了此功能,您可以订阅每个通道终端,并在新值到达时收到通知。 通道和终端还没有移植到RAC 2.x,所以现在RAC中没有双向绑定,但这应该不是什么大问题,因为您总是能够找到不同的imho更好的方法 有关更多详细信息,您可以在github上的框架问题中找到有关此主题的许多线程,例如:
在RAC 2.x之前,您可以使用RACChannel,它提供了此功能,您可以订阅每个通道终端,并在新值到达时收到通知。 通道和终端还没有移植到RAC 2.x,所以现在RAC中没有双向绑定,但这应该不是什么大问题,因为您总是能够找到不同的imho更好的方法 有关更多详细信息,您可以在github上的框架问题中找到有关此主题的许多线程,例如:
您可以尝试以下代码:
viewModel.ageString.producer
.skipRepeats { [weak self] in
$1 == self?.txtAge.text
}.startWithNext { [weak self] in
self?.txtAge.text = $0
}
viewModel.ageString <~ txtAge.rac_textSignal()
.toSignalProducer()
.map { ($0 as? String) ?? "" }
.flatMapError { _ in SignalProducer<String, NoError>.empty }
您可以尝试以下代码:
viewModel.ageString.producer
.skipRepeats { [weak self] in
$1 == self?.txtAge.text
}.startWithNext { [weak self] in
self?.txtAge.text = $0
}
viewModel.ageString <~ txtAge.rac_textSignal()
.toSignalProducer()
.map { ($0 as? String) ?? "" }
.flatMapError { _ in SignalProducer<String, NoError>.empty }