gpt4 book ai didi

ios - RxSwift 使用 bindTo 将 Variable 绑定(bind)到 UILabel 不适用于 Swift 3.0 更新

转载 作者:IT王子 更新时间:2023-10-29 05:22:30 24 4
gpt4 key购买 nike

我使用 RxSwift绑定(bind)我的 viewmodelUILabelUITexfield . UITextfield转换为 Swift 3 没有问题, 只是替换 rx_textrx.text工作了。

但不适用于 UILabel .在 Swift 2.2 ,我用过:

self.viewModel.shiftNameText.asObservable().bindTo(self.shiftLabel.rx_text).addDisposableTo(self.disposeBag)

对于 Swift 3 ,我正在使用 RxSwift 3.0.0-beta.1 并尝试将 rx_text 更改为 rx.text,但它无法编译并显示此错误“无法转换类型 'AnyObserver<String?>' (aka 'AnyObserver<Optional<String>>') to expected argument type 'Variable<String>".

的值

有谁知道为什么以及如何进行这项工作?谢谢。

最佳答案

UILabelrx.text属性类型为 AnyObserver<String?>所以你需要将值映射到一个可选的

self.viewModel.shiftNameText
.asObservable()
.map { text -> String? in
return Optional(text)
}
.bind(to:self.shiftLabel.rx.text)
.disposed(by:self.disposeBag)

或者简而言之:

self.viewModel.shiftNameText
.asObservable()
.map { $0 }
.bind(to:self.shiftLabel.rx.text)
.disposed(by:self.disposeBag)

参见 https://github.com/ReactiveX/RxSwift/issues/875用于其他解决方案。

关于ios - RxSwift 使用 bindTo 将 Variable<String> 绑定(bind)到 UILabel 不适用于 Swift 3.0 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39635262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com