Ios 绑定变量时的RxSwift初始值

Ios 绑定变量时的RxSwift初始值,ios,swift,rx-swift,Ios,Swift,Rx Swift,我有以下代码: import RxSwift import RxCocoa class ViewModel { var text = Variable<String>("") init() { text.value = "hello" } } class ViewController: UIViewController { @IBOutlet weak var textView: UITextView! @IBOutl

我有以下代码:

import RxSwift
import RxCocoa

class ViewModel {

    var text = Variable<String>("")

    init() {
        text.value = "hello"
    }

}

class ViewController: UIViewController {
    @IBOutlet weak var textView: UITextView!
    @IBOutlet weak var counterLabel: UILabel!

    var viewModel = ViewModel()

    let disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()

        textView.rx.text
            .orEmpty
            .debug()
            .bind(to: viewModel.text)
            .disposed(by: disposeBag)
    }
}
导入RxSwift
进口RxCocoa
类视图模型{
变量文本=变量(“”)
init(){
text.value=“你好”
}
}
类ViewController:UIViewController{
@IBOutlet弱var textView:UITextView!
@IBVAR计数器标签:UILabel!
var viewModel=viewModel()
设disposeBag=disposeBag()
重写func viewDidLoad(){
super.viewDidLoad()
textView.rx.text
.绝对的
.debug()
.bind(到:viewModel.text)
.处置(由:处置人)
}
}
绑定工作正常(当我更改
UITextView
时,它会正确更新
viewModel
。但是,由于绑定是单向的(或者我理解是单向的),
textView
不会以我在
viewModel
init
方法中设置的值开始


我可以在绑定之前执行
textView.text=viewModel.text.value
,但由于我使用的是RxSwift,我想了解这里的常规做法。

没错,这是一个单向绑定,您必须手动设置文本视图的初始值。 如果需要双向绑定,请查看以下代码:

import RxSwift
import RxCocoa

class ViewModel {

    var text = Variable<String>("")

    init() {
        text.value = "hello"
    }

}

class ViewController: UIViewController {
    @IBOutlet weak var textView: UITextView!
    @IBOutlet weak var counterLabel: UILabel!

    var viewModel = ViewModel()

    let disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()

        textView.rx.text
            .orEmpty
            .debug()
            .bind(to: viewModel.text)
            .disposed(by: disposeBag)
    }
}

确保在项目()中导入Operators.swift文件

请注意,变量类型必须是
变量
,因为文本是UIKit中的可选字符串