Как мы можем использовать стиль Swift 4.2 для захвата себя в замыканиях в функциях, которые возвращают тип?
Например:
func checkEmailExists(_ email: String) -> Observable<Bool> {
return Observable.create { [weak self] observer in
guard let self = self else { return }
self.callAPI()
}
}
Это приводит к ошибке Non-void function should return a value
, но такжеон не должен return false
, так как это повлияет на результат вызова функции.
РЕДАКТИРОВАТЬ: Другой пример, бросает Non-void function should return a value
func loginWithCredentials() -> Observable<User> {
return Observable.create { [weak self] observer in
guard let self = self else { return }
let decoder = JSONDecoder()
let json = ["id": 1, "name": "John Doe", "email": "john@doe.com"] as [String: Any]
do {
let user = try decoder.decode(User.self, from: json.jsonData()!)
observer.onNext(user) // Simulation of successful user authentication.
} catch {
print("error")
}
return Disposables.create()
}
}