Ios 核心数据-具有一对多关系的sectionNameKeyPath
使用关系创建tableView分区时遇到困难 我有两个具有关系的实体列表项。 我希望列表成为部分,项成为行。我使用键路径设置了Ios 核心数据-具有一对多关系的sectionNameKeyPath,ios,objective-c,core-data,nsfetchedresultscontroller,Ios,Objective C,Core Data,Nsfetchedresultscontroller,使用关系创建tableView分区时遇到困难 我有两个具有关系的实体列表项。 我希望列表成为部分,项成为行。我使用键路径设置了部分nameKeyPath@“itemList”。 下面是我的其他fetchedResultsController的外观 - (NSFetchedResultsController *)fetchedResultsController { if (_fetchedResultsController != nil) { return _fetch
部分nameKeyPath
@“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希望节名为字符串名,而不是“表示”该节的托管对象。以下是我的结论。因为我想使用displayOrderList
对节进行排序,所以我使用itemList.displayOrderList
作为节名键路径,使用itemList.displayOrderList
作为排序描述符。在titleForHeaderInSection中,我将section的标题更改为listName
,效果很好。谢谢你的帮助!