2016-11-09 66 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