Objective c 从目标C到Swift中作为var的完成处理程序
我必须以Swift作为变量呈现此完成处理程序:Objective c 从目标C到Swift中作为var的完成处理程序,objective-c,swift,Objective C,Swift,我必须以Swift作为变量呈现此完成处理程序: -test:(void(^)(id result, NSError* error))completion; 这在斯威夫特中应该是什么样子?在这种情况下,id==AnyObject和NSError==Error?id作为Any导入到Swift中,NSError*在Swift 3中变为Error?,因此您的完成处理程序在Swift中应该是这样读的: func completionHandler(result: Any, error: Error?)
-test:(void(^)(id result, NSError* error))completion;
这在斯威夫特中应该是什么样子?在这种情况下,id==AnyObject和NSError==Error?
id
作为Any
导入到Swift中,NSError*
在Swift 3中变为Error?
,因此您的完成处理程序在Swift中应该是这样读的:
func completionHandler(result: Any, error: Error?) {
// Do something
}
obj.test(completionHandler)
或者,如果要以内联方式定义它:
let handler = { (result: Any, error: Error?) -> Void in
// Do something
}
obj.test(handler)
如果您已经在ObjectiveC中使用了该方法,您可以通过Xcode“生成接口”在Swift中看到它是如何显示的。谢谢您的帮助,但是现在Xcode希望在我创建变量时更正此竞争处理程序,在Swift中,它看起来像:(completionBlock completion:(@escaping(Any?,Error?->Swift.Void)!)什么是“竞争处理程序”?对不起,我错了写它的-完成处理程序