【发布时间】:2013-04-30 06:21:18
【问题描述】:
晚上好,
我需要一些有关 Core Data 的帮助。我有两个实体,图像和专辑(代码中的 ImageGroup),它们具有多对多关系。每个图像可以有多个相册,一个相册可以有多个图像。
在应用程序中,用户可以创建相册。创建相册后,所有新图片都会添加到该相册中。这工作正常。
但是现在我有一个关于 Core Data 中的获取请求的问题。请看一下我当前的“获取”代码:
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"ImageGroup" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
// Load all the other albums
for (ImageGroup *group in fetchedObjects) {
NSString *albumName = group.name;
NSSet *groupSet = group.group;
for (Images *image in groupSet) {
NSLog(@"imageTN: %@", image.nameTN);
}
}
这也很好用。但是,在 groupSet 的“for in”循环期间,会为循环中的每个步骤执行选择查询。如果您只有几张图片,这很好,但是,如果您存储了 1000 多张图片,则此代码将执行 1000 多次查询。
有没有办法在一个查询中加载与相册关联的所有图像? (SELECT * from Images WHERE album_ID = ? 类似的东西)。
这是我第一次使用 Core Data 而不是 sqlite。任何帮助都非常感谢。
【问题讨论】: