实例属性
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+
相关用法
- Swift Result map(_:)用法及代码示例
- Swift Result flatMap(_:)用法及代码示例
- Swift Result get()用法及代码示例
- Swift Result mapError(_:)用法及代码示例
- Swift Result.Publisher zip(_:_:_:)用法及代码示例
- Swift Result.Publisher tryLast(where:)用法及代码示例
- Swift Result.Publisher sink(receiveCompletion:receiveValue:)用法及代码示例
- Swift Result.Publisher merge(with:_:_:)用法及代码示例
- Swift Result.Publisher tryCompactMap(_:)用法及代码示例
- Swift Result.Publisher print(_:to:)用法及代码示例
- Swift Result.Publisher sink(receiveValue:)用法及代码示例
- Swift Result.Publisher eraseToAnyPublisher()用法及代码示例
- Swift Result.Publisher setFailureType(to:)用法及代码示例
- Swift Result.Publisher first(where:)用法及代码示例
- Swift Result.Publisher output(at:)用法及代码示例
- Swift Result.Publisher tryCatch(_:)用法及代码示例
- Swift Result.Publisher dropFirst(_:)用法及代码示例
- Swift Result.Publisher merge(with:_:_:_:_:_:_:)用法及代码示例
- Swift Result.Publisher flatMap(maxPublishers:_:)用法及代码示例
- Swift Result.Publisher map(_:_:_:)用法及代码示例
- Swift Result.Publisher catch(_:)用法及代码示例
- Swift Result.Publisher drop(while:)用法及代码示例
- Swift Result.Publisher prefix(_:)用法及代码示例
- Swift Result.Publisher timeout(_:scheduler:options:customError:)用法及代码示例
- Swift Result.Publisher merge(with:_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Result publisher。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。