Ошибка замыкания типов в быстрых
Я использую 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. Он расскажет вам, где есть проблема.