我有两个多对多相关实体,Customer
和City
以及从它们生成的NSManagedObject子类。我与Customer
到City
的关系称为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
- 值很好,但这会减慢UI(在tableView中显示此数据)。
所以,问题:
city
实体获取City
属性?答案 0 :(得分:1)
获取请求仅获取一个实体类型。如果您抓取Customer
,则会获得Customer
秒。但是,您可以遍历核心数据关系,而无需执行其他获取请求。只需向任何Customer
实例询问其cities
属性的值。这将为您提供零个或多个City
个实例,并且您可以询问其中每个实例的city
属性。
我不确定你使用@"cities.city [cd]"
得到了什么。这不是一个谓词。它可以是谓词的一部分,但它与city
属性不匹配。这就像是等式的一面。