【问题标题】:OK to use NSFetchedResultsController in separate thread to load TableViewCells?可以在单独的线程中使用 NSFetchedResultsController 来加载 TableViewCells 吗?
【发布时间】:2013-12-28 02:35:54
【问题描述】:

基本上我正在尝试加载一个充满CoreData 实体的UITableView。我想将NSFetchedResultsController 的批量大小设置为0,然后使用GCD 线程在每个单元格上加载每个对象:

[_fetchedResultsController objectAtIndexPath:indexPath]; 

这个线程安全吗?

【问题讨论】:

    标签: ios iphone cocoa-touch core-data


    【解决方案1】:

    不,您的获取结果控制器和表格视图都不是线程安全的。

    如果我没记错的话,您可以从后台线程执行核心数据,但是您需要为每个线程单独的 NSManagedObjectContext 来访问您的数据。

    在任何情况下,您都不能从单独的后台线程进行 UI 更改(例如加载表格视图内容)。 UIView 对象不是线程安全的,句号。

    【讨论】:

    • 感谢您的回复。我的意思是实际上想在 GCD 上的 UITableView 中下载一个缩略图,只要你不接触 UIKit,它就可以工作。只是好奇,但为什么 NSFetchedController 比将数据加载到数组中要好得多?你碰巧知道吗?
    • NSFetchedResultsController 是一个核心数据控制器对象,它在核心数据数据库和表视图之类的东西之间进行调解。一旦您了解了如何使用 Core Data,就可以执行诸如添加自动过滤结果的搜索字段、只需单击标题即可按不同列对表视图进行排序等操作。
    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2017-12-19
    • 2022-01-22
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多