0

私は、相互に多対多の関係を持つ2つのエンティティを持つコアデータモデルを持っています。

例えば、

Conference <<---->> Speaker

会議には多くのスピーカーを含めることができ、1人のスピーカーが多くの会議に参加することができます。

NSFetchedResultsControllerを使用しようとしていますが、fetchRequestのメインエンティティはSpeakerです。

すべてのスピーカーが正常に一覧表示されますが、セクションを「会議」名として取得し、そのセクション内のすべてのスピーカーを一覧表示しようとしています。スピーカーとしての「ジョン」という名前が2つのセクションに表示されるようにしたいと思います。これは、彼が2つの会議で講演者であることを意味します。

これは私が使用しているsectionNameKeyPathです: @"conferences.Name"

NSFetchedResultsController *aFetchedResultsController = [[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"conferences.Name"  cacheName:@"fCache"] autorelease];

ちょっと動作しません。{TedEx} 使用するとセクションタイトルとして表示されます[sectionInfo name]

もう1つの問題は、I Oneスピーカーが1つのセクション(会議)に表示された場合、他のセクションには表示されないことです(そのセクション(会議)にそのスピーカーオブジェクトが含まれている場合でも)。

これは、sectionNameを結合された会議のセットとして取得するためである可能性があります。TedEx, SXSW単一のセクションとして。

sectionNameKeypathを選び出し、1つの会議のみを取得し、それぞれの会議内のすべての講演者を一覧表示することを目標とする方法がいくつかあります。おそらく私はある種の述語を設定する必要がありますか?

ここでちょっとバインドしますが、アプローチは問題ですか?述語について読んだことがありますが、コアデータが初めての場合は理解するのが少し難しいです。

4

1 に答える 1

0

これはあなたが考えている方法とは少し異なり、FRCとsectionNameKeyPathを使用してそれを達成するためのより良い方法があるかどうかはわかりませんが、おそらくこれは機能します:

  1. スピーカーをフェッチする代わりに、通常どおりに呼び出されNSFetchRequestたを取得します。これは、conferenceNameやdateなど、必要なもので並べ替えることができます。NSArrayconferences
  2. 次に、テーブルビューで、セクション数をに設定します[conferences count]
  3. 各セクションの行数について、そのセクションの会議オブジェクトを取得し、その[conferences objectAtIndex:section]会議の講演者数を返します。
  4. セルデータを入力するには、次のコマンドでスピーカーオブジェクトを取得します。[[conferences objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
于 2012-05-04T20:53:41.307 に答える