Ошибка замыкания типов в быстрых

Я использую AFNetworking в проекте Swift.

1 - Напечатайте закрытие:

typealias successBlock = (AFHTTPRequestOperation! ,AnyObject!)-> Void
typealias failureBlock = (AFHTTPRequestOperation, NSError!) -> Void

2 - Определите функцию:

func getUserInfo(success: (successBlock)!, failure: (failureBlock)!) {
   let path = "https://api.wei.s.json"
   let parameters = ["source":"key"]
   self.GET(path, parameters: parameters, success: success, failure: failure)
}

3 - Ошибка:

Невозможно вызвать 'GET' с помощью списка аргументов типа '(String, parameters: [String: String], success: (successBlock)!, failure: (failureBlock)!)'

Спасибо за любую помощь.

Eidt:

typealias failureBlock = (AFHTTPRequestOperation, NSError!) -> Void

к

typealias failureBlock = (AFHTTPRequestOperation!, NSError!) -> Void

Ответ 1

Я думаю, что вам не хватает! в определении faultalllockBlock он ожидает явно развернутого необязательного AFHTTPRequestOperation, а не стандартного AFHTTPRequestOperation, которые на самом деле являются разными типами. Я считаю, что это должно быть,

typealias failureBlock = (AFHTTPRequestOperation!, NSError!) -> Void

Ответ 2

Попробуйте следующее:

func getUserInfo(success: (successBlock)!, failure: (failureBlock)!) {
   let path = "https://api.wei.s.json"
   let parameters = ["source":"key"]
   self.GET(path, parameters: parameters, success: success!, failure: failure!)
}

(Обратите внимание на два "взрыва"! на аргументы успеха и сбоя.

Это основано на предположении, что функция GET ожидает закрытие, а не необязательное указание на замыкание. Возможно, так оно и есть. В противном случае используйте клавишу, чтобы получить завершение метода на self.GET и посмотреть тип, который ожидает Swift. Он расскажет вам, где есть проблема.