线程1:致命错误:NSArray元素与Swift Array元素类型不匹配

时间:2018-12-11 09:38:41

标签: ios swift

我有自己的Messages自定义类,其声明如下:

class Message: SBDBaseMessage {

    var text : String?
    var date: Date?

    init(text: String, date: Date) {
        super.init()
        self.text = text
        self.date = date
    }
}

注意:SBDBaseMessageSendBird消息传递框架的定制消息类型。

然后,我有一个这样声明的空数组:

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}}。

我在做什么错?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

好的,我已经找到此错误的原因。 我的UICollectionView数组被附加到另一个带有messages的代码块中,而我并没有将它们强制转换为消息的确切类型(SBDUserMessages)。

调试确实起到了很大作用。在某个时候,我决定在as! SBDUserMessage(实际上是发生崩溃的地方)之前打电话给messaged.removeAll(),之后我发现一切正常。