【发布时间】:2016-12-16 08:06:52
【问题描述】:
我正在使用 JSQMessagesViewController 开发一个消息传递应用程序,我想将另一个变量,一个整数 score 与每条消息相关联(以及默认值,例如 senderID、text 和 displayName) .这就是我尝试实现的方式:
func addMessage(id: String, text: String, displayName: String, score: Int) {
// Make sure the character count is between 10 and 140, then add message to message list to display
if (text.characters.count <= 10 || text.characters.count >= 140) {
}
else {
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 对象可以保存哪些数据的预设定义,我只是不确定如何覆盖它,以便我可以将附加变量与我的消息相关联。
注意:我尝试直接更改 JSQMessagesViewController 框架本身(在 JSQMessage.h 和 JSQMessage.m 文件中)中的代码以添加一个额外的变量,但这只会导致更多错误,我担心我会搞砸一些事情。
有什么解决办法吗?
提前致谢。
编辑
我想我知道该怎么做了!
import UIKit
import JSQMessagesViewController
class CustomMessage: JSQMessage {
var score : Int
init(senderId:String, displayName:String, text:String, score:Int) {
self.score = score
super.init(senderId:senderId, displayName:displayName, text:text)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
但是我现在在super.init 之后遇到错误:must call a designated initializer of the superclass 'JSQMessage'
【问题讨论】:
-
hii 我还想为消息 ID @Ahad Sheriff 添加另一个参数
标签: swift jsqmessagesviewcontroller