2016-10-29 36 views
-1

我有写在斯威夫特2.我升级到斯威夫特3后的功能,现在它给了我一个警告“通过非转义参数成功运作预期的@escaping关闭”斯威夫特非逃逸参数

我是如何改变我的功能来删除警告?这是我的函数:。

func getOfficeDetail (_ officeID:Int, success: ([String:AnyObject]) ->(), failure: (NSError, [String:AnyObject]?) ->()) -> Alamofire.Request { 
    return self.GET ("/endpoint/\(officeID)", parameters : nil, success: success, failure: failure) 
} 

如果我点击它给我的提示“修复它参数‘警告成功’是隐式非逃逸,改变功能,喜欢这个

func getOfficeDetail (_ officeID:Int, success: @escaping ([String:AnyObject]) ->(), failure: (NSError, [String:AnyObject]?) ->()) -> Alamofire.Request { 
    return self.GET ("/endpoint/\(officeID)", parameters : nil, success: success, failure: failure) 
} 

而且警告仍然存在,如果我点击它只是不断取得成功后添加关键字@escaping

这是我的get函数:。

func GET (URL : String, parameters : [String : AnyObject]?, success: ([String:AnyObject]) ->(), failure: (NSError, [String:AnyObject]?) ->()) -> Alamofire.Request { 
//truncate 
} 
+0

显示'GET'的声明。 – matt

+0

使用GET功能更新问题 – Voyager

回答

0

第一个问题实际上是您在拨打GET时错过了URL参数。 GET定义为func GET (URL: String...),但您忘记在致电self.GET(...)时说URL:

然后你需要注意你的GET声明。这个编译是否正确,没有任何@escaping参数?如果是这样,getOfficeDetail应与任何@escaping参数进行编译。否则,他们必须匹配。例如,如果GET中的两个参数均为@escaping,则getOfficeDetail中的两个参数都必须为@escaping