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


Swift Result publisher用法及代碼示例

實例屬性

publisher

一個組合發布者,將這個實例的結果隻發布給每個訂閱者一次,或者如果結果表明失敗則立即失敗。

聲明

var publisher: Result<Success, Failure>.Publisher { get }
Failure 符合 Error 時可用。

詳述

在以下示例中,goodResult 使用整數值 1 提供成功的結果。連接到結果發布者的接收器訂閱者接收輸出 1 ,然後是正常完成( Combine/Subscribers/Completion/finished )。


 let goodResult: Result<Int, MyError> = .success(1)
 goodResult.publisher
     .sink(receiveCompletion: { print("goodResult done: \($0)")},
           receiveValue: { print("goodResult value: \($0)")} )
 // Prints:
 // goodResult value: 1
 // goodResult done: finished

與始終發布單個值的 Combine/Just 發布者相比,如果結果為 Result.failure(_:) ,則此發布者可能不會發送任何值而是以錯誤終止。在下一個示例中,badResult 是包含自定義錯誤的失敗結果。連接到此結果的發布者的接收器訂閱者立即收到終止(Combine/Subscribers/Completion/failure(_:))。


 struct MyError: Error, CustomDebugStringConvertible {
     var debugDescription: String = "MyError"
 }
 let badResult: Result<Int, MyError> = .failure(MyError())
 badResult.publisher
     .sink(receiveCompletion: { print("badResult done: \($0)")},
           receiveValue: { print("badResult value: \($0)")} )
 // Prints:
 // badResult done: failure(MyError)

可用版本

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

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Result publisher。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。