首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不使用UITableView的情况下使用NSFetchedResultsController

在不使用UITableView的情况下使用NSFetchedResultsController
EN

Stack Overflow用户
提问于 2010-07-10 05:28:34
回答 3查看 3.2K关注 0票数 12

NSFetchedResultsController纯粹用于数据管理,即不使用它为UITableView提供数据,这是错误的吗

我在核心数据iPhone应用程序中有一对多关系。每当该关系中的数据发生变化时,我都需要执行需要对这些数据进行排序的计算。在Apple的标准部门/员工示例中,这将类似于确定给定部门的中位数工资。无论何时将员工添加到该部门或从该部门中删除员工,或者员工的薪资发生变化,都需要再次执行中位数计算。

NSFetchedResultsController来说,保持数据的有序和最新,并在数据发生变化时获得通知听起来是一项很棒的工作。唯一的“问题”是我没有使用UITableView。换句话说,我不会在UITableView中显示排序的员工。我只想要一个最新的雇员排序数组,这样我就可以在幕后分析他们。(当然,我不想写一大堆重复NSFetchedResultsController的代码。)

仅仅为了数据管理而使用NSFetchedResultsController,也就是说,不使用它来提供UITableView,这是不是一个坏主意?我在任何地方都没有见过这样做,我想我可能遗漏了一些东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-10 05:52:09

我不会说它不好,但绝对是“沉重”的。

通过NSManagedObjectContextDidSaveNotification监视保存并在那里进行计算将会减少内存和CPU。通知将在其userInfo中附带三个NSArray实例,然后您可以对这些数组使用简单的NSPredicate,以查看您关心的任何员工是否发生了更改并做出响应。

这是NSFetchedResultsController在幕后做的事情的一部分。但是,您将避免使用NSFetchedResultsController中不关心或不需要的其他部分。

重的

NSFetchedResultsController执行更多的处理,而不仅仅是观察保存的对象。它处理增量,调用它的委托,等等。我是而不是说它在任何形式或形式上都不好。我要说的是,如果你只关心对象在你的关系中什么时候发生了变化,你可以通过观察通知来很容易地做到这一点。

内存

此外,没有理由保留任何内容,因为您已经持有"Department“实体,因此可以访问它的关系。保留子对象“以防万一”是一种内存浪费。让Core Data管理内存,这是使用它的部分原因。

票数 12
EN

Stack Overflow用户

发布于 2010-07-10 05:35:19

在没有视图的情况下使用NSFetchedResultsController并没有什么错。你的用例听起来像是一个不重复发明轮子的好理由。

票数 0
EN

Stack Overflow用户

发布于 2010-07-10 05:36:12

对我来说,这听起来像是NSFetchedResultController的恰当用法。这可能有点夸大其词,因为它的主要用途是帮助填充和保持最新的tableViews,但是如果您愿意忍受增加的复杂性,就没有理由不使用它。正确使用通知是另一种方法,它就像我估计的那样复杂。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3216685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档