新的 Xcode 11 beta 4 已经Publishers.Once从 Combine 框架中移除了 struct。什么是替代方案?
Just似乎是可能的候选者,但是,它不能用于在返回类型AnyPublisher<Bool, Error>作为关联Failure类型的方法中返回发布者Just is Never。
例如在下面的方法中,我可以返回 aPublishers.Once因为关联的Failure类型不是Never。
func startSignIn() -> AnyPublisher<Void, Error> {
if authentication.provider == .apple {
let request = ASAuthorizationAppleIDProvider().createRequest()
request.requestedScopes = [.email, .fullName]
let controller = ASAuthorizationController(authorizationRequests: [request])
controller.delegate = self
controller.performRequests()
return Publishers.Once(()).eraseToAnyPublisher()
} else {
return SignInManager.service.startSignIn(auth: authentication)
.map { (auth) -> Void in
self.authentication = auth
}.eraseToAnyPublisher()
}
}
但是现在当我将它改回时,Just我收到一个编译错误,抱怨Just无法返回,因为该方法应该返回具有关联Failure类型的发布者。
func startSignIn() -> AnyPublisher<Void, Error> {
if authentication.provider == .apple {
let request = ASAuthorizationAppleIDProvider().createRequest()
request.requestedScopes = [.email, .fullName]
let controller = ASAuthorizationController(authorizationRequests: [request])
controller.delegate = self
controller.performRequests()
return Just(()).eraseToAnyPublisher() //Error Here
} else {
return SignInManager.service.startSignIn(auth: authentication)
.map { (auth) -> Void in
self.authentication = auth
}.eraseToAnyPublisher()
}
}
是否有任何替代方案Publishers.Once也可以具有相关的故障类型?