使用Swift中的多个参数调用Objective C函数

时间:2015-06-08 16:12:41

标签: objective-c swift

我试图用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的新手,所以任何见解都非常受欢迎。

2 个答案:

答案 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)