首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有NSFetchedResultsController -0段的Mogenerator

具有NSFetchedResultsController -0段的Mogenerator
EN

Stack Overflow用户
提问于 2015-09-24 09:07:54
回答 1查看 54关注 0票数 0

我正在使用一个UITableView从核心数据填充一个NSFetchedResultsController。数据来自名为“NSManagedObject”的Mogenerator生成的一个MenuItem子类。MenuItem实体有一个SectionID参数,它是一个NSNumber,用于确定表视图中的条目应该在哪个部分。

我对数据执行了一个测试提取,并确认了是否正确填充了Core数据。一切都很好。

NSFetchedResultsController按如下方式创建,sectionKeyNamePath设置为@"sectionId":

代码语言:javascript
复制
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“,那么它就能工作。

希望这能对未来的人有所帮助,但我不明白这是怎么回事。有人能解释一下为什么这个问题会解决吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-10-05 02:46:44

你为什么要把FRC设为零?试试这个(它适用于我使用NSNumber属性):

例如,使用mogenerator,您可以使用"MenuItem entityName“获取实体,并使用MenuItemAttributes.sectionId访问属性。

代码语言:javascript
复制
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]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32757459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档