首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环通过数组并从Core-Data中获取数据

循环通过数组并从Core-Data中获取数据
EN

Stack Overflow用户
提问于 2011-06-05 04:15:50
回答 1查看 3.2K关注 0票数 3

我有一个由200个数字(商品id )组成的数组,我想使用商品id从每个商品的核心数据中获取一些数据。我假设这样做的唯一方法是在循环中查询核心数据,在每次迭代中执行fetchRequest并将结果添加到可变数组中。这看起来像是内存消耗,循环超过200个项目可能不是获取所需数据的最佳方式。

所有这些数据的目标都是一个表,所以我想使用NSFetchedResultsController,但是,这可能要求太高了。

当您有数百个要查询的项目时,从核心数据检索数据的最佳方法是什么?

说明性的代码示例将是最受欢迎的。

下面是我的代码:

代码语言:javascript
复制
- (NSFetchedResultsController *)fetchedResultsController {

if (_fetchedResultsController != nil) {
    return _fetchedResultsController;
}

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"Shows" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"downloadCount" ascending:NO];

[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"showId IN %@", resultsArray];
[fetchRequest setPredicate:predicate];

[fetchRequest setFetchBatchSize:20];

NSFetchedResultsController *theFetchedResultsController = 
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                                    managedObjectContext:managedObjectContext 
                                      sectionNameKeyPath:nil 
                                               cacheName:nil];

self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;

[sort release];
[fetchRequest release];
[theFetchedResultsController release];

return _fetchedResultsController;    

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-05 04:27:56

最好使用谓词。例如:

代码语言:javascript
复制
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

// Set the entity for the fetch request.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myID IN %@", IDArray];

// Set the predicate for the fetch request.
[fetchRequest setPredicate:predicate];

// Perform the fetch.
NSError *error;
NSArray *array = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];

这是一个粗略的例子,因为我不知道if的形式或核心数据中的内容,但基本上您可以在核心数据中搜索存储在数组中的if,并且可以进一步实现谓词,以便只返回特定的值。这至少可以让你开始

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6239137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档