Помогите мне разобраться, пожалуйста, у меня есть эта функция:
func getUserDetailsRequestFor(userId: String, completion: @escaping([DataObject?]?, ApiError?, NSError?) -> () ) {
let token = KeychainWrapper.standard.string(forKey: "token") ?? ""
let headers = ["Content-Type": "application/json",
"Authorization": "Bearer " + token]
let endPoint = networkManager.buildURLforEndpoint(endpoint: ApiEndPoints.getUserByID.rawValue.replacingOccurrences(of: "{id}", with: userId))
let request = networkManager.buildURLRequest(withEndpoint: endPoint, andHttpMethod: "Get", andHeaders: headers, andJsonBody: nil)
networkManager.dataTaskWith(with: request) { (apiData, error) in
completion(apiData?.data, apiData?.error, error)
}
}
То, что я называю так:
func getUserDetails() {
NetworkRouter.shared.getUserDetailsRequestFor(userId: "3") { (apiData, apiError, error) in
print("this line get executed first, and i have access to apiData, apiError, error")
DispatchQueue.main.async {
print("this line get executed second, and i don't have access to apiData, apiError, error")
}
}
}
Я поместил операторы печати, чтобы проиллюстрировать мою точную проблему. Я не понимаю, почему у меня нет доступа к параметрам экранирующих замыканий во втором операторе печати.