我正在UITableView
使用NSFetchedResultsController
. 数据来自NSManagedObject
Mogenerator 生成的名为 MenuItem 的子类。MenuItem 实体有一个 SectionID 参数,它NSNumber
是用于确定项目应位于表视图中的哪个部分。
我对数据进行了测试,并确认 Core Data 已正确填充。一切都很好。
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];
问题(和解决方案):
使用此代码,不会识别这些部分。总是返回 0。这NSFetchedResultsController
在我之前手动创建 NSMO 子类时有效,所以我认为它与 Mogenerator 有关。
如果我将 sectionNameKeyPath 更改为 @"primitiveSectionId" 那么它可以工作。
希望这对将来的某人有所帮助,但我不明白这里发生了什么。请有人解释为什么这可以解决问题?
谢谢