我使用获取的结果控制器在聊天应用程序的tableView中显示数据。
当添加新行并且我保存上下文时,该新数据行将从fetchedResultsController委托方法正确插入到tableView中。
然后我将tableView滚动到底部以显示新行。
如果在滚动期间再次执行saveContext(我这样做是为了将指示符更改为已发送),并且发生在tableView仍在滚动时,然后我中断了滚动,并且看起来有点混乱,因为新行仅部分显示了。 / p>
因为我可以使用以下方法更改发送的指标:
if let indexPath = self.fetchedResultsController.indexPath(forObject: messageForUpdate) {
DispatchQueue.main.async(execute: {
if let cell = self.tableView.cellForRow(at: indexPath) as? MessageTableViewCell {
cell.messageStatus = "sent"
}
})
}
我不需要coreData委托来反映行中的更改。但是,当我再次保存上下文时,它仍然可以。有没有第二种方式来保存上下文而不会出现此问题?