0

我有一个简单的 ViewModel:

struct ViewModel {
    var someText = Variable<String>("")

    func foo() -> Observable<String> {
        return someText.asObservable()
    }
}

在 ViewController 中,viewModel 是实例变量,someTextField 是一个 IBOutlet 连接正确的 UITextField

var viewModel = ViewModel()
@IBOutlet weak var someTextField: UITextField!

然后在 ViewController 的 viewDidLoad() 中,我进行了设置并执行以下操作:

someTextField.rx.text.map { $0 ?? "" }.bind(to: viewModel.someText)

let disposeBag = DisposeBag()
let observable = viewMode.foo()
observable.subscribe(onNext: { data in
            print(data)
        }, onError: { error in
            print(error)
        }, onCompleted: {
            print ("complete")
        }, onDisposed: {
            print("disposed")
        }).disposed(by: disposeBag)

当我在文本字段中输入字符时,我希望 print() 打印出这些字符。但是 print() 仅在调试器中调用一次(而不是随后在文本字段接收输入时)

怎么了?

4

1 回答 1

2

You have to retain your disposeBag outside the context and the someTextField.rx.text.map { $0 ?? "" }.bind(to: viewModel.someText) should be disposed(by: disposeBag).

于 2017-12-19T14:23:36.610 回答