Ski*_*kie 1 core-data tableview reloaddata swift
我在TableView中使用了一些CoreData基础。
当我尝试清除其他视图中的那些基础时,我的控制台日志中有一条消息。
CoreData:错误:严重的应用程序错误。在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托捕获了一个异常。
无效的更新:部分0中的行数无效。更新(0)之后,现有部分中包含的行数必须等于更新(3)之前该部分中包含的行数,再加上或减去该数字从该部分插入或删除的行数(已插入0,已删除0),加上或减去移入或移出该部分的行数(移入0,移出0)。与userInfo(空)
用于删除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")
}
Run Code Online (Sandbox Code Playgroud)
我知道我需要重新加载TableView,但是如何在其他View中执行此操作?虐待尝试过此,但此代码不起作用。
var tableViewHistoryClass = HistoryView()
self.tableViewHistoryClass.tableView.reloadData()
Run Code Online (Sandbox Code Playgroud)
请帮助我修复此消息。
小智 5
您可以通过使用通知来实现。
在viewDidLoad方法中创建观察器,您可以在其中显示表视图数据。
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector:"refreshTableView", name: "reloadTable", object: nil)
}
func refreshTableView () {
self.tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)第二个视图控制器->在此视图控制器中,您可以更改数据(如果要这样做)或发送数据对象
NSNotificationCenter.defaultCenter().postNotificationName("reloadTable", object: nil)
Run Code Online (Sandbox Code Playgroud)
因此,它将重新加载您的表格视图。
归档时间: |
|
查看次数: |
569 次 |
最近记录: |