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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。