Notification
、Group
およびの 3 つのエンティティを持つコア データ モデルがありCustomer
ます。それらの間の関係は次のとおりです。
- 顧客は多くのグループに属し、グループは多くの顧客を持つことができます。
- 通知はグループに送信 (所属) され、グループは多数の通知を受信 (保持) できます。
顧客ごとにグループ化されたすべての通知を表示したいと思いUITableView
ます。私はこのようなものを作成しましたNSFetchedResultsController
:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.fetchBatchSize = 10;
fetchRequest.predicate = nil;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Notification"
inManagedObjectContext:self.managedObjectContext];
fetchRequest.entity = entity;
// Default sort descriptors are built in a separate custom method
NSArray *sortDescriptors = [self getDefaultSortDescriptorsForEntity:entity];
fetchRequest.sortDescriptors = sortDescriptors;
return [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"group.customers.firstName"
cacheName:nil];
これが顧客ごとにグループ化されたすべての通知を取得する有効な方法であると仮定すると (それについてもよくわかりません)、iOS は次の例外をスローします。
@"Failed to fetch all Notification objects"
@"Reason: Invalid to many relationship in setPropertiesToFetch: (group.customers.firstName) (NSInvalidArgumentException)"
何かが欠けていて、すべてが正しいように見えるかどうかを確認するために、関係を何度も見直しました。すべてのエンティティのオブジェクトを作成および削除でき、それらの間のリンクも正しいです。
私の質問は次のとおりですsectionNameKeyPath
。値内の複数の関係をトラバースすることは可能ですか? この種のシナリオでは、多対多の関係をどのように処理する必要がありますか?