Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用谓词对tableview中单个实体的NSFetchedResults进行分组_Ios_Nspredicate_Nsfetchedresultscontroller - Fatal编程技术网

Ios 使用谓词对tableview中单个实体的NSFetchedResults进行分组

Ios 使用谓词对tableview中单个实体的NSFetchedResults进行分组,ios,nspredicate,nsfetchedresultscontroller,Ios,Nspredicate,Nsfetchedresultscontroller,我有一个表,显示我能够“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

我有一个表,显示我能够“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按钮时,会发生动态。我想要的行为是:

  • 用户单击第一部分“用户A”行中的“ping按钮”
  • ping按钮消失了,当我得到服务器响应时,它会对“ping朋友”部分进行动画处理。最好是在下面的部分使用动画,但也可以在第一部分使用简单的淡出,在最后一部分使用淡入
  • 第一部分显示尚未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
    
    问题是:

    NSFetchedResultsController是正确的方法吗?到目前为止,我已经在其他TableView中成功地使用了它,我喜欢它可以生成的“自动”动画

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


    非常感谢您提供的任何帮助。

    让这一过程变得非常简单的一个方面是,每个
    用户都应该通过自省知道自己属于哪个类别

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


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

    FRC不生成动画,“它所做的一切”(在我们讨论的上下文中)是观察托管对象上下文的更改,并告诉您(作为代理)发生了什么。委托方法实现告诉表视图要执行哪些动画。因此,FRC不需要实现您想要的动画

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


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

    我最后向模型中添加了一个新属性,并按此对其进行排序。如刚才所建议的数字,以便更轻松地按其排序。谢谢。
    in pseudo SQL : WHERE pinged = true ORDER BY name ASC