2016-11-04 32 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)