【发布时间】:2015-09-24 09:07:54
【问题描述】:
我正在使用 NSFetchedResultsController 从 Core Data 填充 UITableView。数据来自 Mogenerator 生成的名为 MenuItem 的 NSManagedObject 子类。 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];
问题(和解决方案):
使用此代码,无法识别这些部分。 NSFetchedResultsController 总是返回 0。这在我之前手动创建 NSMO 子类时有效,所以我认为它与 Mogenerator 有关。
如果我将 sectionNameKeyPath 更改为 @"primitiveSectionId" 那么它可以工作。
希望这对将来的某人有所帮助,但我不明白这里发生了什么。请有人解释一下为什么这可以解决问题?
谢谢
【问题讨论】:
标签: objective-c uitableview core-data nsfetchedresultscontroller mogenerator