2013-08-29 101 views
0

在我剛寫入的應用程序中,我有一個可以寫成BaseIngredient的對象關係< < --- >>配方。核心數據謂詞涉及謂詞的多對多性能

這種關係的原因是爲了改善現有的基礎模型的性能,它在BaseIngredient和Recipe之間有大約3個表。

,我已經以前寫的謂語是

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

其中穿越幾個對象。

[NSPredicate predicateWithFormat:@"ANY recipes IN %@", recipes]; 

取代它,它是顯著慢。

作爲一個信息,這個謂詞是NSFetchedResultsController的一部分,它從不同的表NSFetchedResultsController傳遞食譜。有沒有人有解釋爲什麼這會更慢,如何快速?

+0

您的謂詞格式字符串的參數應該是食譜,而不是食譜ID。 – Mundi

+0

我已經試過這兩種方法。 –

+0

現在我們知道你的輸入數組是錯誤的,或者你正在搜索的底層數據。你檢查過那些嗎? – Mundi

回答

0

我認爲你的謂詞可以改進。 IN的正確用法是:

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