Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从目标C到Swift中作为var的完成处理程序_Objective C_Swift - Fatal编程技术网

Objective c 从目标C到Swift中作为var的完成处理程序

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?)

我必须以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?) {
    // 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)!)什么是“竞争处理程序”?对不起,我错了写它的-完成处理程序