NSFetchResultsController太慢了

时间:2015-10-16 05:54:27

标签: ios objective-c core-data

我正在使用NSFetchResultsController从数据库接收项目(有80.000项)。

这是我的谓语:@"(desc CONTAINS[cd] %@)", [any text]

对于NSFetchRequest我设置了下一个属性:

request.propertiesToFetch = [NSArray arrayWithObject:[[entityDescription propertiesByName] objectForKey:@"icd"]];
request.returnsDistinctResults = YES;
[request setFetchBatchSize:100];
[request setSortDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"icd" ascending:YES]]];

这背后的想法是我想要一个实时搜索(每个角色用户在文本字段中写入,NSFetchResultsController应该再次进入数据库。

接下来的问题是:在iPad Mini上,每次获取持续时间都在2-3秒之间,这非常非常。我记得1年前我做过同样的事情,工作得更快。

你可以给我一些建议吗?我真的不知道如何改进查询。

1 个答案:

答案 0 :(得分:1)

你的问题是你的谓词。它会扫描每条记录,以查找哪些记录包含所需的搜索文本。此外,使用[cd]会使速度更慢。

2013 WWDC presentation on Core Data Performance

解决了这个确切的问题