RxSwift错误:属性'text'要求'UITextField'继承自'UILabel']

问题描述 投票:1回答:1
func bindSearchTextField() {
        searchTextField.rx.text.asObservable().skip(3)
            .debounce(0.3, scheduler: MainScheduler.instance)
            .subscribe(onNext: { [weak self] searchText in
                guard let strongSelf = self else {
                    return
                }
                if let text = searchText {
                    if text == "" {
                        self?.hideLoader()
                        self?.clearButton.isHidden = true
                    } else {
                        self?.clearButton.isHidden = false
                    }
                    strongSelf.presenter?.getAreaCodeList(text: text)
                }
            }).disposed(by: disposeBag)
    }

我将RxSwift更新到最新版本(从4.4.0到5.1.1)后收到此错误。有人可以帮我吗?

ios xcode rx-swift rx-cocoa
1个回答
0
投票
使用:.debounce(.milliseconds(300), scheduler: MainScheduler.instance)代替。 [Double]的debounce(_:scheduler:)已被删除。

此外,您在订阅中做得太多。如果将订阅分成独立的单元,您会更好:

let searchText = searchTextField.rx.text.asObservable().skip(3) .debounce(.milliseconds(300), scheduler: MainScheduler.instance) .compactMap { $0 } searchText .map { $0.isEmpty } .bind(to: clearButton.rx.isHidden) .disposed(by: disposeBag) searchText .bind { [presenter] in presenter?.getAreaCodeList(text: $0) } .disposed(by: disposeBag)

© www.soinside.com 2019 - 2024. All rights reserved.