![](/img/trans.png)
[英]Possible Bug in Swift 3 with Implicit Bridging of multidimensional arrays?
[英]Swift bridging method call bug
Objective-C方法
typedef void(^CompletionHandler)(NSError *error);
- (void)openWithCompletionHandler:(CompletionHandler)completionHandler authType:(AuthType)authType, ...;
我試圖將目標C代碼轉換為Swift代碼。
我試過了 :
test().openWithCompletionHandler({ (NSError) -> Void in
}, AuthType.Test)
但這是代碼“調用中的額外參數”編譯錯誤。
我該怎么辦?
Swift不會將Objective-C方法與可變參數*( ...
)橋接在一起,因此您聲明的openWithCompletionHandler(:authType :)方法根本不會在Swift中顯示。
從收到的錯誤消息中,我可以看出test()
返回的是AnyObject
,Swift很高興可以調用任何Objective-C方法。 UIDocument
有一個openWithCompletionHandler()
方法,該方法將單個閉包作為唯一參數,因此Swift抱怨說您為該方法提供了太多參數(即使它不是您想要的)。 足夠清楚嗎?
如果可能的話,您需要將Objective-C方法重構為Swift可以理解的方法。
*請注意,這並非完全正確
NSArray
initWithObjects:
方法通過可變參數連接到Swift初始化程序,但是Apple似乎在做一些非公開的事情來使它起作用-類似於它們能夠澄清的方式參數和返回值是否應該是可選的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.