2016-11-09 75 views
0

所以我終於開始做我的Swift3轉換。由於我們有一個用ObjC編寫的遺留代碼庫,因此我遇到了很多以下錯誤。從Swift3調用完成處理程序的Objective C方法(完成是IUO?)

的ObjC的定義是在這裏:

-(void)getRecommendationHintsWithCompletion:(void(^)(NSArray *recommendationHints, NSError *error))completion; 

在雨燕2.2,我們把它稱爲是這樣的:

manager.getRecommendationHints { (hints:[AnyObject]!, error: NSError!) in 
    //code 
}) 

迅速3遷移跑後,雨燕該行代碼沒有被更改,但我得到了錯誤:

Cannot convert value of type '([AnyObject]!, NSError!) ->()' to expected argument type '(([Any]?, Error?) -> Void)!'

所以我TRIE d:

manager.getRecommendationHints { (hints:[Any]?, error: Error?) in 
    //code 
}) 

但我仍然得到:

Cannot convert value of type '([AnyObject]?, Error?) ->()' to expected argument type '(([Any]?, Error?) -> Void)!'

它看起來像那裏的預期參數是一個蘊無包裝可選,但我不知道如何面對這一切。

我該怎麼辦?謝謝!

回答

1

嘗試使用的Error代替NSError

manager.getRecommendationHints { (hints:[Any]?, error: Error?) in 
    //code 
} 

希望這將解決您的問題

+0

你能告訴我它是如何從我的答案有什麼不同? –

+0

我想我們都在同一時間回答 –

+0

標記爲已接受,但有一個xcode問題,直到我清理項目(Cmd-Shift-K)並重新啓動XCode之前,錯誤仍然出現。 :( – SuperDuperTango