0

我有一张表格,向我展示了我能够“ping”的用户。它应该看起来像这样:

Best Friends (section name in tableview)
 - User A - ping button
 - User D - ping button
Friends (section name in tableview)
 - User B - ping button
 - User C - ping button
 - User F - ping button
Pinged friends (section name in tableview)
 - User E
 - User G

该表基本上显示了我所有的用户(相同的 coredata 实体),但是以一种分组的方式。我正在使用(或至少我认为我应该)nsfetchedresultscontroller,因为当您单击第一部分中的 Ping 按钮时应该发生动态。我想要的行为是这样的:

  1. 用户点击第一部分“用户 A”行中的“ping 按钮”
  2. ping 按钮消失,当我收到服务器响应时,它会动画到“Pinged 朋友”部分。最好在下面的部分带有动画,但也可以是在第一部分的简单淡出在最后一部分淡入。

第一部分显示尚未被 ping 的“最好的朋友”列表。该订单基于您 ping 某人的次数和他们的姓名(我已经有一个计数器)。这显示了最后 X 个用户。

in pseudo SQL : WHERE pinged = false AND numberOfPing >= 10 ORDER BY name ASC LIMIT 5

第二部分按字母顺序显示我所有不在第一部分或最后一部分的朋友。

in pseudo SQL : AND numberOfPing < 10 AND pinged = false ORDER BY name ASC

第三部分显示了我所有已经被 ping 过的朋友。

in pseudo SQL : WHERE pinged = true ORDER BY name ASC

问题:

NSFetchedResultsController 是正确的方法吗?到目前为止,我在其他 tableviews 上已经取得了成功,我喜欢它可以产生的“自动”动画。

那么我应该只使用一个 fetchRequest,对吧?但我找不到任何合适的例子来接近我正在寻找的行为。根据这三个标准进行分组。

任何帮助是极大的赞赏。

4

2 回答 2

1

应该使这变得非常容易的一个方面是,每个User实例都应该通过自省知道它属于哪个类别。

您可以在User NSManagedObject子类中实现一个方法(提示:使用类别),该方法返回部分类别(它可以是数字,因此您可以按它排序)。您可以将此计算类别用作sectionNameKeyPath获取的结果控制器。

有关如何在托管对象中实现此功能,请参阅 Apple 的DateSectionTitles示例代码。他们使用瞬态属性,这是最可靠的方法。

于 2013-07-22T20:52:22.603 回答
1

FRC 不产生动画,它所做的“所有”(在我们正在讨论的上下文中)是观察托管对象上下文的变化并告诉您(作为委托人)发生了什么。它是委托方法实现,它告诉表格视图要执行哪些动画。因此,不需要 FRC 来实现您想要的动画。

正如您所说,您想要排序的方式和您将拥有的部分很难通过 FRC 实现。触发动画的用户操作是通过您的控制器无论如何都会处理的按钮。所以在这种情况下最好不要使用 FRC。

您可以为表格的每个部分使用不同的 FRC。如果您希望任何部分有很多行,这只会真正有益(因此您可以利用 FRC 分页)。

于 2013-07-22T20:52:33.623 回答