我有自己的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
的{{1}}。
我在做什么错?任何帮助将不胜感激
答案 0 :(得分:0)
好的,我已经找到此错误的原因。
我的UICollectionView
数组被附加到另一个带有messages
的代码块中,而我并没有将它们强制转换为消息的确切类型(SBDUserMessages
)。
调试确实起到了很大作用。在某个时候,我决定在as! SBDUserMessage
(实际上是发生崩溃的地方)之前打电话给messaged.removeAll(),之后我发现一切正常。