新的 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
也可以具有相关的故障类型?