我在使用关系创建tableView部分时遇到了困难。
我有两个关系列表< ----->>的实体的项目即可。
我想将列表作为部分,项作为行。我使用关键路径sectionNameKeyPath
设置@"itemList"
。
这里我的fetchedResultsController的其余部分看起来像什么
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
// Fetch Request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Item"];
[fetchRequest setFetchBatchSize:20];
// Sort Descriptors
NSSortDescriptor *itemSort = [[NSSortDescriptor alloc] initWithKey:@"displayOrderItem" ascending:YES];
NSSortDescriptor *sectionSort = [[NSSortDescriptor alloc] initWithKey:@"displayOrderList" ascending:YES];
NSArray *sortDescriptors = @[sectionSort, itemSort];
[fetchRequest setSortDescriptors:sortDescriptors];
// Fetched Results Controller
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"itemList" cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
return _fetchedResultsController;
}
结果是fetchedResultsController根本没有填充tableView。当我在没有部分的情况下尝试使用sectionNameKeyPath:nil
和setSortDescriptor:itemSort
时,它会填充tableView。此外,numberOfSectionsInTableView
和controller didChangeSection
已正确设置。
我不确定我做错了什么。有人可以帮我吗?
由于
答案 0 :(得分:4)
将段名密钥路径更改为itemList.listName
,因为FRC期望该段的字符串名称,而不是表示该段的托管对象。