核心数据 - 具有一对多关系的 sectionNameKeyPath

Core Data - sectionNameKeyPath with a One to Many Relationship

我在使用关系创建 tableView 部分时遇到困难。

我有两个实体具有 List <----->> Item 关系。

我希望 List 成为节,Item 成为行。我用关键路径 @"itemList" 设置了 sectionNameKeyPath。 这是我的 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:nilsetSortDescriptor:itemSort 时,它可以很好地填充 tableView。此外,numberOfSectionsInTableViewcontroller didChangeSection 已正确设置。

我不确定我做错了什么。有人可以帮我解决这个问题吗?

谢谢

将部分名称关键路径更改为 itemList.listName,因为 FRC 需要该部分的字符串名称,而不是该部分的托管对象 'representing'。