2016-10-29 39 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