我在使用关系创建 tableView 部分时遇到困难。
我有两个具有关系的实体 列表 > Item 。
我希望 列表 是部分,而 项目 是行。我使用关键路径 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
已正确设置。我不确定我做错了什么。有人可以帮我解决这个问题吗?
谢谢
最佳答案
将部分名称键路径更改为 itemList.listName
,因为 FRC 需要该部分的字符串名称,而不是“代表”该部分的托管对象。
关于ios - 核心数据 - 具有一对多关系的 sectionNameKeyPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32219623/