核心数据预测涉及谓词的多对多性能

时间:2013-08-29 20:42:48

标签: ios objective-c core-data

在我刚刚编写的应用程序中,我有一个对象关系,可以写成BaseIngredient<< --->>配方

这种关系的原因是为了提高现有底层模型的性能,该模型在BaseIngredient和Recipe之间有大约3个表。

我之前写过的谓词是

[NSPredicate predicateWithFormat:@"SUBQUERY(ingredients, $i, ANY $i.ingredientSection.recipe IN %@).@count > 0", self.recipesFilter];

遍历了几个对象。

我用

替换了它
[NSPredicate predicateWithFormat:@"ANY recipes IN %@", recipes];

它明显变慢了。

作为一些信息,这个谓词是NSFetchedResultsController的一部分,它从不同的表NSFetchedResultsController传递食谱。有没有人解释为什么这会更慢以及如何快速制作?

1 个答案:

答案 0 :(得分:0)

我认为您的谓词可以改进。 IN的正确用法是:

[NSPredicate predicateWithFormat:@"recipes in %@", selectedRecipes];