使用 "Result" 调用完成处理函数

Call completion Handler function using "Result"

如何在使用"Result"的同时调用getEmployee函数?

struct Employee {
    let name: String
    let designation: String
}

func getEmployee(name: String, completion: @escaping(Result<Employee?, Error>) -> Void) {

}

首先你需要让你的结构符合 Codable

struct Employee: Codable {
    let name, designation: String
}

如果您的员工解码成功 .success(employee) 或者如果解码失败并显示您的错误 .failure(error):

,您需要从服务器获取数据并调用完成
func getEmployee(name: String, completion: @escaping(Result<Employee, Error>) -> Void) {
    URLSession.shared.dataTask(with: URL(string: "http://www.example.com/getEmployee.api?name=\(name)")!) { data, response, error in
        guard let data = data, error == nil else {
            if let error = error { completion(.failure(error)) }
            return
        }
        do {
            let employee = try JSONDecoder().decode(Employee.self, from: data)
            completion(.success(employee))
        } catch {
            completion(.failure(error))
        }
    }
}

用法:

getEmployee(name: "Ella") { result in
    switch result {
    case let .success(employee):
        print("employee:", employee)
    case let .failure(error):
        print("error:", error)
    default: break
    }
}