Swift 多次获取核心数据

Swift 多次获取核心数据,swift,core-data,Swift,Core Data,我正在构建一个包含核心数据的聊天应用程序,有一个包含聊天列表的ViewController。每次视图出现之前,我都会尝试更新此列表: override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) chatlist.removeAll() tableView.reloadData() guard let appDelegate

我正在构建一个包含核心数据的聊天应用程序,有一个包含聊天列表的
ViewController
。每次视图出现之前,我都会尝试更新此列表:

   override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        chatlist.removeAll()
        tableView.reloadData()

        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return
        }

        let managedContext = appDelegate.persistentContainer.viewContext
        let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "MessagesList")
        let sort = NSSortDescriptor(key: "date", ascending: false)
        fetchRequest.sortDescriptors = [sort]

        do {
            self.chatlist = try managedContext.fetch(fetchRequest)
        } catch let error as NSError {
            print("Could not fetch. \(error), \(error.userInfo)")
        }
    }
覆盖函数视图将出现(u动画:Bool){
超级。视图将显示(动画)
chatlist.removeAll()
tableView.reloadData()
让appDelegate=UIApplication.shared.delegate作为?appDelegate else{
返回
}
让managedContext=appDelegate.persistentContainer.viewContext
let fetchRequest=NSFetchRequest(entityName:“MessagesList”)
let sort=NSSortDescriptor(键:“日期”,升序:false)
fetchRequest.sortDescriptors=[sort]
做{
self.chatlist=尝试managedContext.fetch(fetchRequest)
}将let错误捕获为NSError{
打印(“无法获取.\(错误),\(错误.userInfo)”)
}
}

但它只调用了一次,当我转到另一个
ViewController
并返回到此控制器时,数据没有更新,第二次fetch查询没有工作。如何在每次VC出现时从核心数据中提取数据,或者更好地说,如何在VC内部的后台更新数据?

第一个打开的表会自动重新加载,但第二个不会自动加载,所以请尝试 将数组设置为

 self.chatlist = try managedContext.fetch(fetchRequest)
 tableView.reloadData()

不,先生,
viewwillbeen
每次都在调用,
chatlist.removeAll()
工作正常,但是第二次fetch查询不工作,我只看到空的
tableView
您必须在获取数据后调用reloadData,而不是在它之前。把它放在你的抓块里