【发布时间】:2016-04-26 11:22:02
【问题描述】:
我在 TableView 中使用了一些 CoreData 基础。
当我试图在其他视图中清除这些基础时,我的控制台日志中有一条消息。
CoreData:错误:严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了异常。
无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (0) 必须等于更新前该节中包含的行数 (3),加上或减去数字从该部分插入或删除的行数(0 插入,0 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。与 userInfo (null)
为了删除 CoreData 数组,我使用了这段代码
self.historyArray.removeAll()
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "History")
fetchRequest.returnsObjectsAsFaults = false
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
for managedObject in results
{
let managedObjectData:NSManagedObject = managedObject as! NSManagedObject
managedContext.deleteObject(managedObjectData)
}
} catch {
print("Detele all data")
}
我知道我需要重新加载 TableView,但是如何在其他视图中执行此操作? 我试过了,但这段代码不起作用。
var tableViewHistoryClass = HistoryView()
self.tableViewHistoryClass.tableView.reloadData()
请帮我修复这条消息。
【问题讨论】:
-
您不需要通知或委托。您的 NSFetchedResultsController 已经在观察删除和崩溃,因为它们没有得到正确处理。你只需要配置它的委托方法,要么在删除每个对象时从表中删除行,要么重新加载表视图。
标签: swift core-data tableview reloaddata