核心数据父子UITableView关系
Posted
技术标签:
【中文标题】核心数据父子UITableView关系【英文标题】:Core Data Parent-Child UITableView Relationship 【发布时间】:2012-07-24 02:51:57 【问题描述】:我正在尝试创建父子核心数据关系。 TableViewA
包含汽车制造商,TableViewB
包含所选制造商制造的汽车。 我想过滤汽车,使它们只显示在他们的制造商表格视图中。我的这个工作相当不错,但是当我在一个制造商表格视图中添加汽车时,它会正确显示在添加它的制造商表视图,但在所有其他制造商表视图中,单元格仅显示其他制造商表视图中添加的汽车数量的默认标签(“单元格”)。这是TableViewB
的tableView: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】:在选择制造商时,您需要修改分配给获取的结果控制器的谓词。
【讨论】:
我已经添加了一个 NSPredicaterequest.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 关系的核心数据中获取父实体的数据