Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 获取关系对象_Objective C_Cocoa_Macos_Core Data_Osx Lion - Fatal编程技术网

Objective c 获取关系对象

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"

CoreData初学者

我对CoreData有一个简单的问题。我的模型有两个实体,现在称为A和B。实体A具有B实体的一对多关系,这与实体A具有相反的关系

我正在使用以下代码检索实体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];
现在,一旦完成提取请求,所有这些关系对象都应该出现故障并准备就绪