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

时间:2015-08-26 06:41:12

标签: ios objective-c core-data nsfetchedresultscontroller

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

我有两个关系列表< ----->>的实体的项目即可。 enter image description here

我想将列表作为部分,作为行。我使用关键路径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:nilsetSortDescriptor:itemSort时,它会填充tableView。此外,numberOfSectionsInTableViewcontroller didChangeSection已正确设置。

我不确定我做错了什么。有人可以帮我吗?

由于

1 个答案:

答案 0 :(得分:4)

将段名密钥路径更改为itemList.listName,因为FRC期望该段的字符串名称,而不是表示该段的托管对象。