gpt4 book ai didi

ios - 可观察的 distinctUntilChanged 返回重复项

转载 作者:行者123 更新时间:2023-11-28 14:25:20 25 4
gpt4 key购买 nike

设置:RxSwift 4.2 Swift 4.1 Xcode 9.4.1

我目前正在使用 distinctUntilChanged 来获取唯一值。但就我而言,它仅适用于“排序”值。

例如这里:

func unique(source: Observable<Int>) -> Observable<Int> {
return source.distinctUntilChanged()
}

这是相应的测试:

func testUnique() {
let input = Observable.from([1,2,3,4,4,5,4])
let expectation = [Recorded.next(0, 1),
Recorded.next(0, 2),
Recorded.next(0, 3),
Recorded.next(0, 4),
Recorded.next(0, 5),
Recorded.completed(0)]

_ = Class().unique(source: input).subscribe(observer)

XCTAssertEqual(observer.events, expectation)
}

我的测试失败了:

XCTAssertEqual failed: ("[next(1) @ 0, next(2) @ 0, next(3) @ 0, next(4) @ 0, next(5) @ 0, next(4) @ 0, completed @ 0]")
is not equal to ("[next(1) @ 0, next(2) @ 0, next(3) @ 0, next(4) @ 0, next(5) @ 0, completed @ 0]") -

所以最后的 4 是重复的。
这种行为是预期的还是错误?

最佳答案

这确实是预期的行为,这就是为什么运算符被称为“.distinctUntilChanged()”的原因。您显然想要的是“.distinct()”,但它在基本的“RxSwift”框架中不可用,仅在“RxSwiftExt”框架中可用 - https://github.com/RxSwiftCommunity/RxSwiftExt#distinct

关于ios - 可观察的 distinctUntilChanged 返回重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51633300/

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