當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。