Objective c 从Swift调用具有多个参数的目标C函数
我试图从Swift调用具有多个参数的Objective C方法。我在这里遵循了出色的设置说明: My.h头文件:Objective c 从Swift调用具有多个参数的目标C函数,objective-c,swift,Objective C,Swift,我试图从Swift调用具有多个参数的Objective C方法。我在这里遵循了出色的设置说明: My.h头文件: NSMutableData *_responseData; @interface RegistrationEmailSender : NSObject - (bool) sendRegistrationEmail; @end 我的函数/方法声明: - (bool)sendRegistrationEmail:( NSString *) un
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的新手。尝试相信错误消息告诉您的内容-删除参数名称:
sender.sendRegistrationEmail(username, email)
尝试相信错误消息告诉您的内容-删除参数名称:
sender.sendRegistrationEmail(username, email)
尝试相信错误消息告诉您的内容-删除参数名称:
sender.sendRegistrationEmail(username, email)
尝试相信错误消息告诉您的内容-删除参数名称:
sender.sendRegistrationEmail(username, email)
您的代码有许多问题
- (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等类型之间来回转换。)您的代码存在许多问题
- (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等类型之间来回转换。)您的代码存在许多问题
- (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等类型之间来回转换。)您的代码存在许多问题
- (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等类型之间来回转换。)这样的方法声明是非常不恰当的:
-(bool)sendRegistrationEmail:(NSString*)un:(NSString*)em
,不要这样做。曾经遵循“通话中的额外参数‘un’”这并没有误导。您不明白其中的哪一部分?我正在尝试传递两个字符串参数,username作为第一个参数,email作为第二个参数。如果编译器出于某种原因只假设一个参数,为什么不抱怨“em”?作为Swift和Obj C的新手,我只是想找到正确的语法。谢谢。这不是“只假设一个论点”。您已经声明了两个参数,我们需要传递两个参数。您没有用外部参数名声明它们,所以我们需要零个外部参数名。这似乎是一个很容易理解的想法。这样的方法声明是非常不恰当的:-(bool)sendRegistrationEmail:(NSString*)un:(NSString*)em
,只是不要这样做。曾经遵循“通话中的额外参数‘un’”这并没有误导。您不明白其中的哪一部分?我正在尝试传递两个字符串参数,username作为第一个参数,email作为第二个参数。如果编译器出于某种原因只假设一个参数,为什么不抱怨“em”?作为Swift和Obj C的新手,我只是想找到正确的语法。谢谢。这不是“只假设一个论点”。您已经声明了两个参数,我们需要传递两个参数。您没有用外部参数名声明它们,所以我们需要零个外部参数名。这似乎是一个很容易理解的想法。这样的方法声明是非常不恰当的:-(bool)sendRegistrationEmail:(NSString*)un:(NSString*)em
,只是不要这样做。曾经遵循“通话中的额外参数‘un’”这并没有误导。您不明白其中的哪一部分?我正在尝试传递两个字符串参数,username作为第一个参数,email作为第二个参数。如果编译器出于某种原因只假设一个参数,为什么不抱怨“em”?作为Swift和Obj C的新手,我只是想找到正确的语法。谢谢。这不是“只假设一个论点”。您已经声明了两个参数,我们需要传递两个参数。您没有用外部参数名声明它们,所以我们需要零个外部参数名。这似乎是一个很容易理解的想法。这样的方法声明是非常不恰当的:-(bool)sendRegistrationEmail:(NSString*)un:(NSString*)em
,只是不要这样做。曾经遵循“通话中的额外参数‘un’”这并没有误导。您不明白其中的哪一部分?我正在尝试传递两个字符串参数,username作为第一个参数,email作为第二个参数。如果编译器出于某种原因只假设一个参数,为什么不抱怨“em”?作为Swift和Obj C的新手,我只是想找到正确的语法。谢谢。这不是“只假设一个论点”。您已经声明了两个参数,我们需要传递两个参数。您没有用外部参数名声明它们,所以我们需要零个外部参数名。这似乎很容易理解。em
可能会stay@BenKane这不是他写Objective-C方法声明的方式。谢谢你的反馈。我还尝试了sender.sendRegistrationEmail(用户名,电子邮件),并作为生成错误接收“调用中的额外参数”。啊,是的,你是对的,我不知道我是什么thinking@mba12我试过了,效果很好。如果没有,则说明您的用户名
或电子邮件