绑定swift属性';s值到viewModel';s属性

绑定swift属性';s值到viewModel';s属性,swift,mvvm,binding,reactive-cocoa,Swift,Mvvm,Binding,Reactive Cocoa,我知道,这个问题可能很愚蠢,对不起 情况: 具有属性的UIViewController var selectedItem:(项:项实体,索引:Int)? struct ItemEntity { let id: String let name: String } 和具有属性的viewModel var itemVM=MutableProperty(“”) 问题: 如果我想绑定textField.text值,我只需要使用 viewModel.name <~ nameField

我知道,这个问题可能很愚蠢,对不起

情况:

具有属性的UIViewController
var selectedItem:(项:项实体,索引:Int)?

struct ItemEntity {
    let id: String
    let name: String
}
和具有属性的viewModel
var itemVM=MutableProperty(“”)

问题:
如果我想绑定textField.text值,我只需要使用

viewModel.name <~ nameField.rac_textSignal().toSignalProducer()

)

首先,您使用RAC的ObjectiveC API(
RAC\u textSignal()
)有什么原因吗

当然,这仍然有效(特别是,如果你的应用程序中也有目标C代码的话)

但是,已将UI绑定引入Swift API,允许您从

viewModel.name <~ nameField.rac_textSignal().toSignalProducer()
现在,您可以如下设置
selectedItem

let item1 = ItemEntity(id: "1", name: "One")
selectedItem.value = (item: item1, index: 0)
viewModel.itemVC <~ selectedItem.map { $0?.item.id ?? "" }
假设,
viewModel.itemVC
的类型为
MutableProperty
,现在可以像这样绑定selectedItem:

let item1 = ItemEntity(id: "1", name: "One")
selectedItem.value = (item: item1, index: 0)
viewModel.itemVC <~ selectedItem.map { $0?.item.id ?? "" }
viewModel.itemVC
viewModel.itemVC <~ selectedItem.map { $0?.item.id ?? "" }