2016-11-04 71 views
-2

在斯威夫特变种我必须斯威夫特出示此完成处理的变量:完成处理从Objective-C的

-test:(void(^)(id result, NSError* error))completion; 

必须将此会是什么样斯威夫特?在这种情况下id == AnyObject和NSError ==错误?

+0

如果你在ObjectiveC中已经有了这个方法,你可以看到它是如何在Xcode的“生成接口”中出现在Swift中的。 –

+0

感谢它有点帮助我,但现在xCode想要纠正这个竞争处理器,当我创建一个变量,在Swift它看起来像: (completionBlock完成:(@escaping(Any?,Error?) - > Swift.Void )!) –

+0

什么是“竞赛经理”? – gnasher729

回答

0

id导入到斯威夫特AnyNSError *斯威夫特卡伦特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)