Core Data の使用に問題があります。
私のコア データ モデルには、Grove
エンティティとTree
エンティティがあり、 と の間には 1 対多の関係がGrove
ありTree
、 と の間には 1 対 1 の関係がTree
ありGrove
ます (各ツリーは最大 1 つのグローブにある場合があります)。
ただし、一部Tree
は「ワイルド」であり、どの にも属さない場合がありますGrove
。
fetResultController を使用して、すべてのツリーをテーブル ビューに表示しようとしています。各木立はテーブル ビューのセクションであり、「野生の」木は別のセクションにある必要があります。
私のコードは次のようなものです:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Tree" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
// Edit the sort key as appropriate.
NSSortDescriptor *sectionSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Grove.name" ascending:YES];
NSSortDescriptor *rowSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"type" ascending:YES];
NSArray *sortDescriptors = @[sectionSortDescriptor, rowSortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:@"Grove.name" cacheName:nil];
ご覧のとおり、すべてのツリーを取得しています。セクションを決定するために使用される最初のソート記述子は、木から木立への 1 対 1 の関係に基づいており、木立の名前を探します。2 番目のソート記述子は、特定のセクション内のツリーをソートするために使用され、タイプ別にソートします。
このコードは、木立が定義されている場合はまったく問題なく機能します。ただし、grove=nil のツリーはこのリクエストではフェッチされません。必要な動作を実現する方法を知っていますか? 野生の木のために偽の木立を作らなければなりませんか?