【发布时间】:2021-06-29 13:48:58
【问题描述】:
在 SwiftUI 订阅者中,您通常会拥有这个
authenticate
.receive(on: DispatchQueue.main) // Move to the main thread
.sink(receiveCompletion: { completion in
switch completion {
case .failure(let error): ()
case .finished: ()
}
}, receiveValue: { _ in })
我想提取要在多个订阅者之间共享的 receiveCompletion 代码块,期望相同的完成,即下面要分开并在多个订阅者中使用。
receiveCompletion: { completion in
switch completion {
case .failure(let error): ()
case .finished: ()
}
【问题讨论】:
-
您可以简单地为“receiveCompletion”创建一个单独的函数并将该函数传递到任何地方。
-
@andykkt,我似乎做得不对。然而,要正确地将我的手包裹在封闭物周围。请帮忙
-
一个(可能很有趣)旁注:如果错误的类型是
Never,您可以省略receiveCompletion部分(以防您只对接收新值感兴趣)。您可以通过将错误映射到某个值来实现这一点(可能是nil)