gpt4 book ai didi

ios - 如何让 tableView.reloadData() 与核心数据正常工作?

转载 作者:行者123 更新时间:2023-11-29 05:15:47 25 4
gpt4 key购买 nike

当我运行应用程序时,我可以填充tableview中的单元格,但是当我保存(从单独的 View Controller )并返回tableview Controller 时>, tableView.reloadData() 被调用但没有任何反应。我使用通知中心重新加载数据,然后再弹出。

TableViewController.swift:

lazy var fetchedResultsController: NSFetchedResultsController<Pet> = {
let fetchRequest = PersistenceManager.shared.fetchRequest()
let context = PersistenceManager.shared.context
let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
return frc as! NSFetchedResultsController<Pet>
}()

override func viewDidLoad() {
super.viewDidLoad()
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(pushToAddPetViewController))
tableView.register(MainTableViewCell.self, forCellReuseIdentifier: "cell")
do {
try fetchedResultsController.performFetch()
tableView.reloadData()
} catch let err {
print(err)
}
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(loadList), name: NSNotification.Name(rawValue: "load"), object: nil)
}

@objc func loadList(notification: NSNotification){
DispatchQueue.main.async {
self.tableView.reloadData()
}
}

AddPetVC.swift:

func saveContext() {
// Inputs saved to coreData
PersistenceManager.shared.saveContext()
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
self.navigationController?.popViewController(animated: true)
}

最佳答案

您在 viewDidLoad() 中获取了数据,当您返回 View 时,该数据不会被调用。您应该在 viewWillAppear() 中获取数据并从该数据或通知观察者方法 loadList(notification: NSNotification) 重新加载。因此,在 viewWillAppear() 或 loadList(notification: NSNotification) 中添加以下代码:

 do {
try fetchedResultsController.performFetch()
tableView.reloadData()
} catch let err {
print(err)
}

关于ios - 如何让 tableView.reloadData() 与核心数据正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59206730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com