如何在 RxSwift 中设置 RxTimeInterval 以防抖动?
Posted
技术标签:
【中文标题】如何在 RxSwift 中设置 RxTimeInterval 以防抖动?【英文标题】:How to set RxTimeInterval for debounce in RxSwift? 【发布时间】:2019-06-08 13:21:47 【问题描述】:无法在 rxswift 中设置去抖动的 Rxtimeinterval。我的代码如下。我收到此错误消息“无法将 'Double' 类型的值转换为预期的参数类型 'RxTimeInterval' (aka 'DispatchTimeInterval')”
searchBar
.rx.text // Observable property thanks to RxCocoa
.orEmpty // Make it non-optional
.debounce(0.5, scheduler: MainScheduler.instance) // Wait 0.5 for changes.
.distinctUntilChanged() // If they didn't occur, check if the new value is the same as old.
.filter !$0.isEmpty
错误信息:
“无法将“Double”类型的值转换为预期的参数类型“RxTimeInterval”(又名“DispatchTimeInterval”)”
【问题讨论】:
【参考方案1】:searchBar
.rx.text // Observable property thanks to RxCocoa
.orEmpty // Make it non-optional
.debounce(.milliseconds(500), scheduler: MainScheduler.instance) // Wait 0.5 for changes.
.distinctUntilChanged() // If they didn't occur, check if the new value is the same as old.
.filter !$0.isEmpty
【讨论】:
【参考方案2】:更改这一行:
.debounce(0.5, scheduler: MainScheduler.instance)
至此行:
.debounce(RxTimeInterval.milliseconds(500), scheduler: MainScheduler.instance)
【讨论】:
【参考方案3】:“无法将“Double”类型的值转换为预期的参数类型“RxTimeInterval”(又名“DispatchTimeInterval”)”
我遇到了同样的错误,我只是添加了这个:
.debounce(RxTimeInterval.milliseconds(500), scheduler: MainScheduler.instance)
而不是这个 .debounce(0.5, scheduler: MainScheduler.instance)
只需确保您在 milliseconds(<value>)
中的值是一个 int
【讨论】:
以上是关于如何在 RxSwift 中设置 RxTimeInterval 以防抖动?的主要内容,如果未能解决你的问题,请参考以下文章