我试图用Swift中的多个参数调用Objective C方法。我按照优秀的设置说明进行操作:How to call Objective-C code from Swift
我的.h头文件:
NSMutableData *_responseData;
@interface RegistrationEmailSender : NSObject
- (bool) sendRegistrationEmail;
@end
我的函数/方法声明:
- (bool)sendRegistrationEmail:( NSString *) un
:( NSString *) em
{
// send email
}
最后来自Swift课程的电话:
// Send User a Validation Email
var sender: RegistrationEmailSender = RegistrationEmailSender()
sender.sendRegistrationEmail(un: username as NSString, em: email as NSString)
我从XCODE收到此错误:
Extra argument 'un' in call
我已经四处阅读了,这似乎是"额外的争论"错误信息具有误导性,它常常与类型不匹配和其他类似原因有关,尽管我已经不遗余力地确保类型匹配。我是Swift和Objective C的新手,所以任何见解都非常受欢迎。
答案 0 :(得分:2)
您的代码存在许多问题。
- (bool)sendRegistrationEmail:( NSString *) un
:( NSString *) em
应该是
- (BOOL) sendRegistrationEmail: (NSString *) un
em: (NSString *) em
.h文件需要与.m文件完全相同的定义。你不能跳过这些参数。
然后当你从Swift调用它时它应该是这样的:
sender.sendRegistrationEmail(username, em: email)
(你不应该需要强制转换为NSString,因为Swift会自动在String和NSString等类型之间来回转换。)
答案 1 :(得分:1)
尝试相信错误消息告诉您的内容 - 删除参数名称:
sender.sendRegistrationEmail(username, email)