如何从单个managedobjectcontext获取多个托管对象

时间:2014-08-11 13:21:21

标签: xcode5

例如,假设您在一个managedobjectcontext中有Fourweeler和Twoweeler两个nsmanagedobjects,那么如何编写获取请求查询以在samtime检索这两个对象。

1 个答案:

答案 0 :(得分:0)

获取请求一次只能检索一个实体。如果您有两个不相关的实体,则需要创建两个获取请求。如果您的实体有关系,您可以使用单个获取请求并通过entity1.relationship访问实体2,反之亦然。

在最简单的形式中,获取请求以随机顺序返回一个对象数组(在这种情况下,我们有一个名为Event的实体,其名称为timeStamp):

// create a fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

// fetch all objects
NSError *error = nil;
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
    NSLog(@"Houston, we have a problem: %@", error);
}

// display all objects
for (Event *event in fetchedObjects) {
    NSLog(@"%@", [event.timeStamp description]);
}

要订购您的托管对象,您可以添加排序描述符。如果不需要所有对象,则可以添加谓词以过滤将哪些管理对象添加到数组中。请查看Xcode中的代码片段以获取此类示例(上面的代码基于代码片段)。