Objective-C方法
typedef void(^CompletionHandler)(NSError *error);
- (void)openWithCompletionHandler:(CompletionHandler)completionHandler authType:(AuthType)authType, ...;
我试图将对象c代码转换为swift代码。
我试过了:
test().openWithCompletionHandler({ (NSError) -> Void in
}, AuthType.Test)
但这是代码“调用中的额外参数”编译错误。
我该怎么办?
答案 0 :(得分:0)
Swift并没有将Objective-C方法与变量参数*(...
)联系起来,所以你声明的`openWithCompletionHandler(:authType :)方法并没有出现在一切都在斯威夫特。
从您收到的错误消息中,我可以看出test()
正在返回AnyObject
,Swift很乐意调用任何Objective-C方法。 UIDocument
有一个openWithCompletionHandler()
方法,它将一个闭包作为唯一的参数,因此Swift抱怨你为那个方法提供了太多的参数(甚至虽然它不是你想要的那个)。够清楚吗?
如果可能,您需要将Objective-C方法重构为Swift可以理解的内容。
*请注意,这并非完全正确 -
NSArray
initWithObjects:
方法被桥接到具有可变参数的Swift初始化程序,但Apple似乎正在做一些非公开的事情这项工作 - 类似于他们如何澄清参数和返回值是否应该是可选的。