我正在使用一个UITableView从核心数据填充一个NSFetchedResultsController。数据来自名为“NSManagedObject”的Mogenerator生成的一个MenuItem子类。MenuItem实体有一个SectionID参数,它是一个NSNumber,用于确定表视图中的条目应该在哪个部分。
我对数据执行了一个测试提取,并确认了是否正确填充了Core数据。一切都很好。
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“,那么它就能工作。
希望这能对未来的人有所帮助,但我不明白这是怎么回事。有人能解释一下为什么这个问题会解决吗?
谢谢
发布于 2015-10-05 02:46:44
你为什么要把FRC设为零?试试这个(它适用于我使用NSNumber属性):
例如,使用mogenerator,您可以使用"MenuItem entityName“获取实体,并使用MenuItemAttributes.sectionId访问属性。
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:[MenuItem entityName]];
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:MenuItemAttributes.sectionId ascending:YES], [NSSortDescriptor sortDescriptorWithKey:MenuItemAttributes.rowID ascending:YES]];
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.persistenceController.moc
sectionNameKeyPath:MenuItemAttributes.sectionId
cacheName:nil];
// Make sure you set your frc as the delegate
frc.delegate = self;
NSError *error = nil;
if (![fetcher performFetch:&error]) {
/*
* Did you execute the request?
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
NSLog(@"%lu", [frc.sections count]);https://stackoverflow.com/questions/32757459
复制相似问题