代码之家  ›  专栏  ›  技术社区  ›  SFF

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

  •  3
  • SFF  · 技术社区  · 9 年前

    我很难使用关系创建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:nil 而且只是 setSortDescriptor:itemSort ,它会很好地填充tableView。而且 numberOfSectionsInTableView controller didChangeSection 正确设置。

    我不知道我做错了什么。有人能帮我吗?

    谢谢

    1 回复  |  直到 9 年前
        1
  •  5
  •   Wain    9 年前

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