swift中的typealias闭包错误

时间:2015-04-24 08:56:54

标签: swift afnetworking

我在Swift项目中使用AFNetworking。

1 - 关闭Typealias:

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,参数:[String:String],success:(successBlock)!, failure:(failureBlock)!)'

感谢您的帮助。

EIDT:

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

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

2 个答案:

答案 0 :(得分:5)

我认为你错过了!在failureBlock类型定义上,它期望一个显式解包的可选AFHTTPRequestOperation而不是标准的AFHTTPRequestOperation,它们实际上是不同的类型。我相信它应该是,

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

答案 1 :(得分:1)

试试:

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期望的类型。它会告诉你哪里有问题。