【问题标题】:RxSwift Error: Property 'text' requires that 'UITextField' inherit from 'UILabel'RxSwift 错误:属性“文本”要求“UITextField”继承自“UILabel”
【发布时间】:2020-05-29 09:12:05
【问题描述】:
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】:

    改用:.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)
    

    【讨论】:

    • 非常感谢丹尼尔。它帮助我解决了错误并按照您的建议格式化了代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多