核心数据父子UITableView关系

Posted

技术标签:

【中文标题】核心数据父子UITableView关系【英文标题】:Core Data Parent-Child UITableView Relationship 【发布时间】:2012-07-24 02:51:57 【问题描述】:

我正在尝试创建父子核心数据关系。 TableViewA 包含汽车制造商,TableViewB 包含所选制造商制造的汽车。 我想过滤汽车,使它们只显示在他们的制造商表格视图中。我的这个工作相当不错,但是当我在一个制造商表格视图中添加汽车时,它会正确显示在添加它的制造商表视图,但在所有其他制造商表视图中,单元格仅显示其他制造商表视图中添加的汽车数量的默认标签(“单元格”)。这是TableViewBtableView:cellForRowAtIndexPath: 方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"Car Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    


    Car *car = [self.fetchedResultsController objectAtIndexPath:indexPath];

    if (car.manufacturer == self.currentManufacturer) 

            cell.textLabel.text = car.carName;
    

    return cell;

请解释如何在 Core Data 中正确过滤。

【问题讨论】:

【参考方案1】:

在选择制造商时,您需要修改分配给获取的结果控制器的谓词。

【讨论】:

我已经添加了一个 NSPredicate request.predicate = [NSPredicate predicateWithFormat:@"Car.manufacturer.manufacturerName = %@", currentManufacturer.manufacturerName] 但我收到一个错误:*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'key path Car.manufacturer.manufacturerName not found in entity <NSSQLEntity Car id=2>' 我已经尝试了 NSPredicate 的一些组合。 怎么样:[NSPredicate predicateWithFormat:@"manufacturer.manufacturerName = %@", currentManufacturer.manufacturerName] 我的fetchRequest 用于汽车。我想访问我的制造商父关系。我得到同样的错误。

以上是关于核心数据父子UITableView关系的主要内容,如果未能解决你的问题,请参考以下文章

在代码中设置关系,在父子节点都插入核心数据之后?

仅在父子实体具有 1 到 M 关系的核心数据中获取父实体的数据

在插入新的子对象时,父子对象传递与多级的一对多关系。 IOS核心数据

在 UITableView 中对核心数据多对关系进行排序

UITableview:无法从其数据源获取单元格

具有多个实体和 uitableview 的核心数据