Objective c 获取关系对象
CoreData初学者 我对CoreData有一个简单的问题。我的模型有两个实体,现在称为A和B。实体A具有B实体的一对多关系,这与实体A具有相反的关系 我正在使用以下代码检索实体A:Objective c 获取关系对象,objective-c,cocoa,macos,core-data,osx-lion,Objective C,Cocoa,Macos,Core Data,Osx Lion,CoreData初学者 我对CoreData有一个简单的问题。我的模型有两个实体,现在称为A和B。实体A具有B实体的一对多关系,这与实体A具有相反的关系 我正在使用以下代码检索实体A: NSManagedObjectContext *context = [self managedObjectContext]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"A"
NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"A"
inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"name"
ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:descriptor]];
NSError *error = nil;
NSArray *items = [context executeFetchRequest:request error:&error];
if (error) /* ... */;
for (id item in items)
{
/* ... */
}
[request release];
[descriptor release];
现在,我想在这个循环中,检索由A的关系指向的所有对象B的数组。我如何实现这一点?我应该创建另一个获取请求,还是有更实用的方法
我搜索了StackOverflow,发现了类似的问题,但有时太模糊了。
NSFetchRequest
有一个实例方法,名为-setRelationshipKeyPaths预览:
此方法采用一个键名数组,该数组将用于预取与这些键路径相关的任何对象。考虑你的例子,用新代码更新:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
NSString *relationshipKeyPath = @"bObjects"; // Set this to the name of the relationship on "A" that points to the "B" objects;
NSArray *keyPaths = [NSArray arrayWithObject:relationshipKeyPath];
[request setRelationshipKeyPathsForPrefetching:keyPaths];
现在,一旦完成提取请求,所有这些关系对象都应该出现故障并准备就绪