当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Optional.Publisher tryAllSatisfy(_:)用法及代码示例


实例方法

tryAllSatisfy(_:)

发布单个布尔值,指示是否所有接收到的元素都通过给定的error-throwing 谓词。

声明

func tryAllSatisfy(_ predicate: @escaping (Self.Output) throws -> Bool) -> Publishers.TryAllSatisfy<Self>

返回值

发布者发布一个布尔值,该值指示是否所有接收到的元素都通过给定的谓词。

参数

predicate

评估每个接收到的元素的闭包。返回true 继续,或false 取消上游并完成。闭包可能会抛出错误,在这种情况下,发布者会取消上游发布者并因抛出的错误而失败。

详述

使用Publisher/tryAllSatisfy(_:) 运算符确定流中的所有元素是否满足您提供的error-throwing 谓词中的条件。当此发布者收到一个元素时,它会针对该元素运行谓词。如果谓词返回 false ,则发布者生成 false 值并完成。如果上游发布者正常完成,则此发布者会生成 true 值并完成。如果谓词抛出错误,发布者将失败并将错误传递给其下游订阅者。

在下面的示例中,error-throwing 谓词测试整数数组发布者的每个元素是否落入 targetRange ;如果元素为零,谓词将引发错误并终止流。


let targetRange = (-1...100)
let numbers = [-1, 10, 5, 0]


numbers.publisher
    .tryAllSatisfy { anInt in
        guard anInt != 0 else { throw RangeError() }
        return targetRange.contains(anInt)
    }
    .sink(
        receiveCompletion: { print ("completion: \($0)") },
        receiveValue: { print ("value: \($0)") }
    )


// Prints: "completion: failure(RangeError())"

使用类似于 Publisher/reduce(_:_:) 的运算符,此发布者最多生成一个值。

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional.Publisher tryAllSatisfy(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。