所以我终于开始做我的Swift3转换了。我有很多以下错误,因为我们有一个用ObjC编写的遗留代码库。
ObjC的定义如下:
-(void)getRecommendationHintsWithCompletion:(void(^)(NSArray *recommendationHints, NSError *error))completion;
在Swift 2.2中,我们称之为:
manager.getRecommendationHints { (hints:[AnyObject]!, error: NSError!) in
//code
})
swift 3迁移器运行后,那段快速代码没有改变,但我得到了错误:
Cannot convert value of type '([AnyObject]!, NSError!) -> ()' to expected argument type '(([Any]?, Error?) -> Void)!'
所以我试过了:
manager.getRecommendationHints { (hints:[Any]?, error: Error?) in
//code
})
但我仍然得到:
Cannot convert value of type '([AnyObject]?, Error?) -> ()' to expected argument type '(([Any]?, Error?) -> Void)!'
看起来预期的争论中有一个Implicity Unwrapped Optional,但我不知道如何解决这个问题。
我该怎么办?谢谢!
答案 0 :(得分:1)
尝试使用Error
代替NSError
manager.getRecommendationHints { (hints:[Any]?, error: Error?) in
//code
}
希望这可以解决您的问题