我正在使用第三方框架构建应用,他们有一个默认对象(称为JSQMessage
),它有3个参数(id
,text
和displayName
):
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。如果您需要更多信息,请告诉我
答案 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的基本内容。