微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当试图调用便利init,Swift时调用额外的参数

我有简单的课程:

class WmAttendee{

    var mEmail:String!
    var mName:String!
    var mType:Int!
    var mStatus:String = "0"
    var mRelationShip:String!

    init( email:String,name:String,type:Int) {
        self.mEmail = email
        self.mName = name
        self.mType = type
    }

     convenience init( email:String,type:Int,status:String,relationShip:String) {
        self.init(email: email,name: name,type: type)
        self.mStatus = status
        self.mRelationShip = relationShip
    }
}

当我尝试用5个参数测试第二个构造函数时,我得到:调用中的额外参数’status’

var att1 = WmAttendee(email: "myMail",name: "SomeName",type: 1); // OK

var att2 = WmAttendee(email: "mail2",name: "name2",type: 3,status: "2",relationShip: 3)
 // ERROR Extra argument 'status' in call

为什么?我错过了什么吗?

谢谢,

解决方法

根据您的方法签名:

convenience init( email:String,relationShip:String)

relationshipStatus应该是String而不是Int:

var att2 = WmAttendee(email: "mail2",relationShip: "3")

由于您没有为relationshipStatus传递正确的类型,因此编译器无法为您的方便init匹配方法签名,并且返回认初始化(它可以找到的最接近的匹配),这会触发Extra参数错误.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐