【问题标题】:Why use NSFetchedResultsController?为什么使用 NSFetchedResultsController?
【发布时间】:2011-04-13 16:05:45
【问题描述】:

核心数据在 NSManagedObjectContext 类中提供了“executeFetchRequest”方法,我们可以使用它从表中获取数据并以任何需要的方式使用它。

现在还有另一种方法是使用 NSFetchedResultsController 并将其提供给 UITableView 以从表中获取数据。

我现在的问题是:

  • 哪种方式更快?我的意思是性能方面,哪种方式最好?

  • NSFetchedResultsController 是否只与 UITableViews 一起使用?

  • NSFetchedResultsController 的优缺点是什么。

  • 最后一件事,“为什么我们使用 NSFetchedResultsController”,是什么让它比其他任何方式都好。

【问题讨论】:

    标签: iphone core-data nsfetchedresultscontroller nsfetchrequest


    【解决方案1】:

    最后一件事,“我们为什么使用 NSFetchedResultsController”,什么 事情使它比其他任何东西都好 方式。

    FRC 类旨在自动处理与为表提供复杂和动态数据相关的所有开销。

    如果您只有一个简单的、数据永不更改的分区表,那么 FRC 不会给您带来任何优势。你只需做一次取货,你就完成了。但是,如果数据在 UI 中(用户重新排列、删除或添加)或代码(例如从服务器更新数据)中更改数据,FRC 提供了处理所有持续更改并确保表格准确反映的机制这些变化。

    哪种方式更快?,我的意思是 性能方面,哪一个是 最好的?

    使用 fetch 或 FRC 在性能上没有重大差异,因为它们都使用相同的 fetch 机制从持久存储中获取数据。如果您有复杂的动态数据,那么使用 FRC 比手动复制其功能要快。

    有什么优点和缺点 NSFetchedResultsController。

    见上文。

    Is NSFetchedResultsController 只是 与 UITableViews 一起使用?

    是的,它确实只对表格有用。

    【讨论】:

    • 完全有道理,所有额外的开销都已经处理好了。就像我的情况一样,记录是服务器经常更新的。所以任何时候都可以更新 UI,以前我使用的是 fetch request,而要更新 UI 我使用的是 NSNotifications,但 FRC 现在很容易,更改会自动反映在 Table Views 中。
    • NSFetchedResultsController 也是为 UICollectionView 设计的。
    • NSFetchedResultsController 提供了非常方便的方法来在数据发生变化时做出响应。无需手动进行检查或确定数据是否有任何差异,以便重新加载表/集合视图或“重绘”某些视图。 (例如使用controllerDidChangeContent( /* ... */ ) 函数)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多