Ios 联合:如何在保护前提条件出现错误的情况下提前退出
我想创建一个方法authenticate,它使用Combine允许用户使用我的API登录 我现在试图添加一个先决条件,以便如果提供的用户名为空,我的方法不会接触网络。我想在这一点上创建一个早期的exist,向订阅者返回一个错误 请在下面找到我的代码片段。如何返回第4行中早期存在的错误Ios 联合:如何在保护前提条件出现错误的情况下提前退出,ios,swift,combine,Ios,Swift,Combine,我想创建一个方法authenticate,它使用Combine允许用户使用我的API登录 我现在试图添加一个先决条件,以便如果提供的用户名为空,我的方法不会接触网络。我想在这一点上创建一个早期的exist,向订阅者返回一个错误 请在下面找到我的代码片段。如何返回第4行中早期存在的错误 func authenticate(username: String, password: String) -> AnyPublisher<User, Error> { guar
func authenticate(username: String, password: String) -> AnyPublisher<User, Error> {
guard !username.isEmpty else {
// How to return an error to the subscribers from here?????
return
}
let parameters: [String: Any] = [
"username": username,
"password": password
]
var request = URLRequest(endpoint: Endpoint.login)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: [])
return URLSession.shared.dataTaskPublisher(for: request)
.map { $0.data }
.decode(type: AuthenticationResult.self, decoder: JSONDecoder())
.map { $0.user }
.receive(on: RunLoop.main)
.eraseToAnyPublisher()
}
您可以使用,它是发布服务器的一种类型:
返回失败错误:MyError.missingUsername.橡皮擦任何发布者
您可以使用,它是发布服务器的一种类型:
返回失败错误:MyError.missingUsername.橡皮擦任何发布者
您可能会发出一个空的或失败的消息,这实际上取决于您如何处理管道。由于data task publisher在任何情况下都只发布一次,因此我认为Fail更合适。您可能会发出一个空或一个Fail,这实际上取决于您如何处理管道。由于data task publisher在任何情况下都只发布一次,所以我认为Fail更合适。