Jestem nowy w szybkim, proszę zasugerować mi, jak utworzyć program obsługi zakończenia dla tej funkcji usługi

func postRequest(router: Router, postData: [String: String], completion: @escaping (Result<Int, Error>) -> ()) { ......

Utknąłem tutaj

ServiceLayer.postRequest(router: Router.register, postData: postData) { (<#Result<Int, Error>#>) in
            return ....
        }
1
theUturn 3 kwiecień 2020, 13:40

4 odpowiedzi

Najlepsza odpowiedź

Result ma .success i .failure przypadki, więc możesz użyć tego Result jak - & gt;

postRequest(router: Router.register, postData: postData) { result in
    switch result {
    case .success(let value): 
        // Do something

    case .failure(let error): 
        // Do something
    }
}

BONUS

Zrozumienie typu wyniku w języku Swift 5

1
emrcftci 3 kwiecień 2020, 10:44

Jest już kilka poprawnych odpowiedzi. Jeśli masz 2 podobne funkcje postu z różnymi wywołaniami zwrotnymi. F.e

func postRequest(router: Router, postData: [String: String], completion: @escaping (Result<Int, Error>) -> Void) {}
func postRequest(router: Router, postData: [String: String], completion: @escaping (Error) -> Void) {}

Następnie możesz określić typ połączenia w ten sposób:

ServiceLayer.postRequest(router: Router.register, postData: postData) { (result: Result<Int, Error>) in
}

ServiceLayer.postRequest(router: Router.register, postData: postData) { (error: Error) in
}

0
Samps 3 kwiecień 2020, 10:56
ServiceLayer.postRequest(router: Router.register, postData: postData) { (response) in
            switch response{
                 case .success(let id):
                     print(id)
                     //do something with return id
                 case .failure(let error):
                    //error handle
            }
        }

Więcej informacji Samouczek dotyczący typów wyników

0
Dilan 3 kwiecień 2020, 10:52

Po prostu prosi o nadanie nazwy argumentowi zamykającemu. Możesz to zrobić:

ServiceLayer.postRequest(router: Router.register, postData: postData) { result in
}
1
Robert Crabtree 3 kwiecień 2020, 10:44