0

我有两个多对多相关的实体,Customer以及City从它们生成的 NSManagedObject 子类。我有从CustomerCity调用的关系cities。里面有City一个属性叫city. 现在我正在尝试Customer使用简单的实体从实体中获取所有内容fetchResultsController

-(NSFetchedResultsController *) fetchedResultsController {

  if (_fetchedResultsController != nil)
  {
      return _fetchedResultsController;
  }
  self.managedObjectContext = [[PTDataManager sharedManager] managedObjectContext];
  NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
  NSEntityDescription *entity = [NSEntityDescription entityForName:@"Customer"
                                            inManagedObjectContext:[self managedObjectContext]];
  [fetchRequest setEntity:entity];

  _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                                 managedObjectContext:self.managedObjectContext
                                                                   sectionNameKeyPath:nil
                                                                            cacheName:nil];
  _fetchedResultsController.delegate = self;

  return _fetchedResultsController; 
}

结果,我可以使用谓词检索除cities属性((null)值)之外的所有内容

@"cities.name CONTAINS[cd] %@"

Customer子类中我可以使用方法:

-(City *)city 
{
  return (CDCities *)[[PTDataFetchHelper sharedInstance] entityForName:@"City"
                                                          withServerID:self.city_server_id
                                                             inContext:[self managedObjectContext]]; 
}

我正在检索city-values 很好,但这种方式会减慢 UI(在 tableView 中显示此数据)。
所以,问题:

  • 如果我像这样执行基本提取,我是只检索指定实体的值,还是也检索相关实体的值?
  • 如果我需要额外的谓词,我该如何修改它以从实体中获取city属性?City
4

1 回答 1

1

获取请求仅获取一种实体类型。如果你 fetch Customer,你会得到Customers。但是您可以遍历 Core Data 关系而无需执行额外的 fetch 请求。只需向任何Customer实例询问其cities属性的值。这将使您获得零个或多个City实例,并且您可以向每个实例询问其city属性。

我不知道你在做什么@"cities.city [cd]"。那不是谓词。city它可能是谓词的一部分,但它与属性不匹配。这就像等式的一侧。

于 2013-07-15T17:03:19.313 回答