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

冰风暴0806

当我运行应用程序时,我能够填充我的单元格,tableview但是当我保存(从一个单独的视图控制器)并返回到 时tableview controllertableView.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()
    }
}

添加PetVC.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)
}
SM 阿布·塔赫·阿西夫

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

成功登录/ AFNetworking后,tableview reloadData无法正常工作

动画[tableView reloadData]

ReloadData() 不刷新 TableView

如何在不使用tableView.reloadData()的情况下在Swift中访问闭包之外的数据?

在AFNetworking中成功调用后self.tableView reloadData无法正常工作

从tableView的核心数据填充数据时如何避免重复行

tableView reloadData不起作用

如何在核心数据上创建可观察对象并将其绑定到tableView

当我们从 FireStore 检索数据时,tableview.reloaddata() 仍然在 Dispatchqueue.main.sync 之外工作

Swift:tableView.reloadData()太慢了

tableView.reloadData() 不调用 cellForRowAtindexPath()

每次显示视图时,tableView.reloadData()

iOS:tableView.reloadData()无法快速运行

未立即调用self.tableview.reloaddata()

tableView.reloadData()表未更新

_tableView reloadData使我的应用程序崩溃

MBProgressHUD隐藏在tableView reloadData()之前

tableView reloadData 不起作用,委托方法

tableview.reloadData() 不重复 cellForRowAt 函数

iOS 7.1 tableView reloadData无法正确更新tableView

Tableview reloadData 不适用于显示 NSUserDefaults 数组的 tableView

在调用tableView.reloadData()之后,TableView无法重新加载

iOS-为什么在第一次加载应用程序时reloadData tableView数据?

不同tableView部分中的核心数据对象

同时删除tableview行和核心数据中的项目

在OS X Tableview中显示的Swift核心数据

目标C中的Tableview,核心数据和JSON

核心数据NSPredicate无法正常工作

应用程序在TableView的reloadData方法上崩溃