-2
在斯威夫特变种我必须斯威夫特出示此完成处理的变量:完成处理从Objective-C的
-test:(void(^)(id result, NSError* error))completion;
必须将此会是什么样斯威夫特?在这种情况下id == AnyObject和NSError ==错误?
在斯威夫特变种我必须斯威夫特出示此完成处理的变量:完成处理从Objective-C的
-test:(void(^)(id result, NSError* error))completion;
必须将此会是什么样斯威夫特?在这种情况下id == AnyObject和NSError ==错误?
id
导入到斯威夫特Any
,NSError *
斯威夫特卡伦特3成为Error?
让你完成处理程序应在斯威夫特这样写的:
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完成:(@escaping(Any?,Error?) - > Swift.Void )!) –
什么是“竞赛经理”? – gnasher729