如何在NSFetchedResultsController中使用多对多的关系?

时间:2011-03-30 13:47:54

标签: iphone xcode core-data nsfetchedresultscontroller

我有两个实体Group和Contact。联系人可以属于许多组,并且组具有许多联系人。所以我创造了许多关系。像这样:

Group           Contact
attribute       attribute
  gname           name
  gid             gender
relationship    relationship
  cnt<<--------->>grp

我想在UITableView中显示所有联系人,这些联系人有很多部分,每个部分都有很多行。像这样:

GroupA
  Contact1
  Contact2
  Contact3
GroupB
  Contact1
  Contact3
GroupC
  Contact2
  Contact3

我的问题是如何创建NSFetchedResultsController来实现这一目标?我可以使用属性将UITableView划分为多个部分。我曾尝试将它分为使用简单到多种关系,但失败了,对于很多人来说,我......

如果我有一个名为“GroupD”的组,其中没有任何联系人。所以Contact实体没有任何grp属性包含“GroupD”的行,那么我只有三个部分。我想我的UITableView是这样的:

GroupA
  Contact1
  Contact2
  Contact3
GroupB
  Contact1
  Contact3
GroupC
  Contact2
  Contact3
GroupD

但我确实得到了:

GroupA
  Contact1
  Contact2
  Contact3
GroupB
  Contact1
  Contact3
GroupC
  Contact2
  Contact3

我认为最大的问题是我创建NSFetchedResultsController的方式。

请帮忙。

任何回复都会受到赞赏,提前谢谢。

1 个答案:

答案 0 :(得分:-2)

我认为UITableView不可能显示没有单元格的部分。如果你能接受这个事实,那么你的NSFetchResultController应该如下所示。

NSFetchRequest *fetchRequest = ....
NSEntityDescription *entity = .... @"Contact" ....
fetchRequest.entity = entity;

[NSFetchResultsController alloc] initWithFetchRequest:fetchRequest
                                   ...
                                   sectionNameKeyPath:@"grp"
                                   ...