iOS 14致命异常:在当前数据模型中找不到NSInternalInconsistencyExceptionException路径

问题描述

升级到iOS 14后,出现以下错误。我正在使用一个名为MessageKit的库来构建。

正在准备在更新可见视图时,在当前数据模型中找不到{length = 2,path = 25-0},并且不在更新动画中

有人知道这个错误是什么意思吗?崩溃指向集合视图上的方法scrollToBottom。无论出于何种原因,看起来当运行动画或其他内容时,模型中的最后一项都不再存在。我想知道是否可能是由于键入指示符引起的,但我不确定。

func insertMessage(_ message: NewMessageModel) {
    // Reload last section to update header/footer labels and insert a new one
    dispatchQueue.main.async {
        
        self.isPerformingBatchUpdates = true
        self.messagesCollectionView.performBatchUpdates({
            self.messages.append(message)   //The messages object can only be modified on the main thread
            self.checkLastMessageSent(message: message)
            self.messagesCollectionView.insertSections([self.messages.count - 1])
            if self.messages.count >= 2 {
                self.messagesCollectionView.reloadSections([self.messages.count - 2])
            }
        },completion: { [weak self] _ in
            self?.messagesCollectionView.scrollToBottom(animated: true)
            self?.isPerformingBatchUpdates = false
        })
    }

}

解决方法

使用下面的功能,它将正常工作。

value2 = NumberSystem_ Binary (Number 101)
,

根据 MessageKit 的新变化,您现在需要使用 scrollToLastItem() 而不是使用 scrollToBottom(animated:)

func insertMessage(_ message: NewMessageModel) {
    DispatchQueue.main.async {
        
        self.isPerformingBatchUpdates = true
        self.messagesCollectionView.performBatchUpdates({
            self.messages.append(message)
            self.checkLastMessageSent(message: message)
            self.messagesCollectionView.insertSections([self.messages.count - 1])
            if self.messages.count >= 2 {
                self.messagesCollectionView.reloadSections([self.messages.count - 2])
            }
        },completion: { [weak self] _ in
            self?.messagesCollectionView.scrollToLastItem() // Use it instead of using `scrollToBottom(animated:)`
            self?.isPerformingBatchUpdates = false
        })
    }

}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...