をUITableView
使用して Core Data から を入力していNSFetchedResultsController
ます。データは、NSManagedObject
MenuItem と呼ばれる Mogenerator によって生成されたサブクラスから取得されます。MenuItem エンティティには SectionID パラメータがありNSNumber
、これを使用して、テーブル ビュー内のどのセクションに項目を配置するかを決定します。
データに対してテスト フェッチを実行し、コア データが正しく設定されていることを確認しました。すべて問題ありませんでした。
はNSFetchedResultsController
次のように作成されsectionKeyNamePath
、 @"sectionId" に設定されます。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MenuItem" inManagedObjectContext:self.persistenceController.moc];
[fetchRequest setEntity:entity];
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"sectionId" ascending:YES], [NSSortDescriptor sortDescriptorWithKey:@"rowId" ascending:YES]];
NSFetchedResultsController *frc = nil;
frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.persistenceController.moc
sectionNameKeyPath:@"sectionId"
cacheName:nil];
問題(および解決策):
このコードでは、セクションは識別されません。はNSFetchedResultsController
常に 0 を返します。これは以前に NSMO サブクラスを手動で作成したときに機能していたので、Mogenerator に関連するものであると考えました。
sectionNameKeyPath を @"primitiveSectionId" に変更すると、機能します。
これが将来誰かに役立つことを願っていますが、ここで何が起こっているのかわかりません。これで問題が解決する理由を誰か説明してください。
ありがとう