【发布时间】:2018-12-11 09:38:40
【问题描述】:
我有我的 Messages 自定义类,声明如下:
class Message: SBDBaseMessage {
var text : String?
var date: Date?
init(text: String, date: Date) {
super.init()
self.text = text
self.date = date
}
}
注意:SBDBaseMessage 是SendBird 消息传递框架的自定义消息类型。
然后,我有一个像这样声明的空数组:
var messages: [Message] = [Message]()
在下面的代码块中,我收到了这个崩溃消息(在第二行)->
线程 1:致命错误:NSArray 元素无法匹配 Swift 数组 元素类型
代码如下:
func sendMessage() {
if let channel = self.groupChannel {
channel.sendUserMessage(textView.text) { (message, error) in
guard error == nil else { return }
let newMessage: Message = Message(text: (message?.message)!, date: Date())
self.messages.append(newMessage)
self.tableView.reloadData()
}
}
}
这里的消息是一个SBDUserMessage,它继承自SBDBaseMessage。
我做错了什么?任何帮助将不胜感激
【问题讨论】:
-
你确定崩溃就是在这个地方产生的吗?当从 Objective-C
NSArray桥接到 SwiftArray时会出现问题,但在这种情况下没有NSArray。你能发布一个更大的代码sn-p吗?也许包含您发布的代码的整个方法? -
您提到失败代码块中的消息是
SBDUserMessage- 这是与您自己的Message类(继承自SBDBaseMessage)不同的类。要附加的消息必须与声明数组时使用的类完全相同。 -
@Chris 我认为 OP 意味着将
message参数传递给Message构造函数。SBDUserMessage确实包含message属性,即NSString -
@mag_zbc 好的,谢谢。
-
当然,@mag_zbc,我已经更新了问题并添加了更大的代码 sn-p