gpt4 book ai didi

iphone - 在 Core Data 应用程序中调用 PerformFetch 后,是否需要手动更新 TableView ?

转载 作者:行者123 更新时间:2023-12-03 20:59:31 25 4
gpt4 key购买 nike

我是核心数据业务的新手。

我得到了一个与 NSFetchedResultsController 连接的 UITableViewController。在 viewDidLoad 中,我触发请求以从服务器获取必要的数据,然后使用 [self.fetchedResultsController PerformFetch:&error] 更新 TableView 。在那之前一切正常。

现在我想将数据获取内容移至另一个线程,因此应用程序从服务器接收到 NSArray 对象后,它会在主线程上执行 didFinishFetchingItems 选择器。在该选择器中,我将 NSArray 保存到核心数据存储,并让 fetchedResultsController 执行提取。尽管 NSLog 显示数据仍然存在(例如 [[fetchedResultsController fetchedObjects] count] 返回 100),但没有显示任何数据。我必须在方法末尾放置一个 [self.tableView reloadData] 来手动刷新 TableView 。

我的问题是:我做错了什么?为什么我需要手动刷新 TableView ?

最佳答案

您不应该在非主线程中触摸 NSFetchedResultsController,这不是线程安全的操作。

如果您的获取有很长的延迟,那么您需要使用单独的 NSManagedObjectContext 进行后台获取。如果您在后台执行单独的提取,它会将数据加载到缓存中,然后 NSFetchedResultsController 将访问缓存而不是磁盘,从而加快主线程上的检索速度。

关于iphone - 在 Core Data 应用程序中调用 PerformFetch 后,是否需要手动更新 TableView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169268/

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