2011-11-23 61 views
2

我在我的應用程序中使用了搜索控制器。用戶鍵入一個單詞,然後返回一個Core Data實體列表,其中每個實體都有一個包含該單詞的標題。這很容易。核心數據在不同的目錄中搜索

但我還想在此列表的底部返回其他實體,這些實體的搜索詞作爲它們的標題,並與我首先搜索的詞有多對多的關係。

因此,如果我在標題中找不到搜索詞,我想搜索與第一個實體類型相關的實體的標題。

使用單個NSPredicate可能嗎?

這裏是我的核心數據模型

Code Data model diagram

回答

1

有兩類實體:TermPart。你想構建這樣一個列表:

  • 首先在Term實體title ==標題
  • 然後所有的Part實體title ==標題

如果這是正確的,你贏了無法用一個NSFetchRequest來獲取列表的兩個部分。最簡單的方法是執行兩個單獨的提取,並將第二個列表追加到第一個列表。如果您爲數據添加更多結構,您可以通過一個奇特的請求來完成此操作,但據我所知,這並不值得。如果你有大量的數據,你當然應該考慮巧妙的方法來索引它。

5

作爲一邊,你應該永遠不要使用單向關係。它們對性能不利,並且Xcode應該通過對它們的警告尖叫你。不要忽視警告。

對於搜索,我會按照@Felixyz的說法,兩次提取併合並結果。如果數據變得龐大,那麼你會希望將「搜索標題」拆分爲一個具有關係的單獨對象,並且僅僅根據搜索對象進行搜索。

雖然修復了你的關係。即使從來沒有使用它們,核心數據將。

+1

我修好了)謝謝) –