Swift:我如何子类化一个对象,以便我可以添加一个额外的变量?

时间:2016-08-11 16:50:47

标签: swift oop

我正在使用第三方框架构建应用,他们有一个默认对象(称为JSQMessage),它有3个参数(idtextdisplayName ):

func addMessage(id: String, text: String, displayName: String) {
        let message = JSQMessage(senderId: id, displayName: displayName, text: text)
        messages.append(message) 
}

我想将另一个参数添加到名为score的对象中:

func addMessage(id: String, text: String, displayName: String, score: Int) {

        let message = JSQMessage(senderId: id, displayName: displayName, text: text, score: score)
        messages.append(message)
}

但是我不断收到错误Argument labels '(senderId:, displayName:, text:, score:)' do not match any available overloads

我知道我必须继承JSQMessage对象并将我的额外变量添加到你的子类对象...除了我不知道如何做到这一点。

我创建了一个名为CustomMessage.swift的JSQMessage的新子类,它看起来像这样:

class CustomMessage: JSQMessage {

}

现在我该如何向对象添加额外的参数?

请注意,对象如下所示:JSQMessage(id: String, text: String, displayName: String)

但我希望它接受另一个这样的参数: JSQMessage(id: String, text: String, displayName: String, score: Int)

如果有人能帮助我,我会非常感激。

P.S。如果您需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:4)

您需要创建一个新类。语法类似于

class MyMessage : JSQMessage {
}

您可以将额外属性添加到班级

class MyMessage : JSQMessage {
    var score : Int
}

[我猜你的score在这里是Int。]

然后你需要添加一个初始化器

class MyMessage : JSQMessage {
    var score : Int

    init(senderID:Int, displayName:String, text:String, score:Int) {
        self.score = score
        super.init(senderID:senderID, displayName:displayName, text:text)
    }
}

如果您遇到此类问题,我强烈建议您花一些时间使用Apple的免费书The Swift Programming Language,因为这是Swift的基本内容。