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

SFF*_*SFF 3 core-data objective-c nsfetchedresultscontroller ios

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

我有两个具有关系List <----->> Item 的实体。 在此处输入图片说明

我希望List是部分,而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;
}
Run Code Online (Sandbox Code Playgroud)

结果是 fetchedResultsController 根本没有填充 tableView。当我在没有节的情况下尝试使用sectionNameKeyPath:nil和 just 时setSortDescriptor:itemSort,它会很好地填充 tableView。此外,numberOfSectionsInTableViewcontroller didChangeSection已正确设置。

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

谢谢

Wai*_*ain 5

将部分名称键路径更改itemList.listName为 FRC 需要该部分的字符串名称,而不是“代表”该部分的托管对象。