Я заменил свою функцию sendRequest сертификатом закрепления. Я использовал это в нескольких местах в моем коде, и это работает, но когда я пытаюсь использовать это таким образом, это не работает. Я не понимаю, может быть, это тот факт, что он находится внутри функции "завершения"? Я действительно не знаю.
Сообщение об ошибке:
callback () -> () 0x0000000100253ac0 `частичное применение перенаправителя для помощника реабстрации thunk из @escaping @callee_unowned @convention (block) (@unowned Swift .Optional <__ C .NSData>, @unowned Swift.Optional <__ C .NSError>) -> () в @escaping @callee_guaranteed (@guaranteed Swift.Optional, @guaranteed Swift.Optional <__ * 1022) * .NSError>) -> () в
Новая функция (не работает):
func sendRequest(_ request: URLRequest!, callback: @escaping (Data?, NSError?) -> Void)
{
let type:String = request.httpMethod! as String
var url:String = request.url!.absoluteString
let body:Data? = request.httpBody
var parameters: [String:Any] = [:]
if (body == nil)
{
parameters = [:]
}
else
{
parameters = NSKeyedUnarchiver.unarchiveObject(with: body!) as! [String : Any]
}
WebServiceManagement.sharedInstance.checkCertificate(url: url, parameters: parameters, type: type, completionHandler: { receivedData, errorMess in
if ((receivedData) != nil)
{
var response: [String : Any]? = nil
do {
response = try JSONSerialization.jsonObject(with: receivedData!, options: []) as? [String : Any]
} catch {
callback(nil, error as NSError)
}
if !(errorMess == "") {
let error = NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey : errorMess])
callback(nil, error)
print("Error: Response strange format, not an NSArray and not a NSString!\n\(String(data: receivedData!, encoding: .utf8) ?? "")")
}
print("response success")
if let response = response {
print("\(response)")
callback(receivedData, nil)
}
}
})
}
func checkCertificate(url: String, parameters: [String : Any], type: String, completionHandler: @escaping (Data?, String) -> Void)
{
...
}
Старая функция (работает ):
func sendRequest(_ request: URLRequest!, callback: @escaping (Data?, NSError?) -> Void)
{
NSURLConnection.sendAsynchronousRequest(request, queue: OperationQueue.main) { response, data, error in
var httpStatus = 0
if let httpResponse = response as? HTTPURLResponse
{
#if DEBUG
print("Status code: \(httpResponse.statusCode)")
#endif
httpStatus = httpResponse.statusCode
}
if error != nil || httpStatus >= 400
{
let ERROR_CODE = httpStatus
let error = NSError(domain: "Error Domain", code: ERROR_CODE, userInfo: nil)
callback(data, error)
}
else
{
callback(data, nil)
}
}
}
Есть идеи?