2013-02-08 52 views
0

好吧,假設我有許多「Office」類型的實體,並且它有一個叫做「employees」的關係,這是一個包含「Employee」對象的多對多關係。 「員工」有一個名爲「lastName」的屬性。CoreData - NSFetchRequest和對子關係實體的篩選

鑑於此,我需要執行一次提取操作,返回一組具有> 0個員工的Office對象,但在返回的辦公室中,員工關係中的Employee對象已被過濾爲僅包含Employee對象,其中lastName等於「史密斯」。

我可以很容易地獲取所有Office對象,然後遍歷它們並刪除名稱與Smith不匹配的所有員工,但會刪除商店中的這些對象。

我假設在這裏需要SUBQUERY,但我似乎無法得到它正確過濾。有任何想法嗎?

+0

__我似乎無法得到它正確過濾_,向我們展示一些代碼? – 2013-02-08 15:10:48

+0

你試圖做的是不可能的。提取請求返回一個對象數組,並且訪問它們的關係給出了它們當前在託管對象上下文中定義的相關對象。過濾器可以限制*取回請求返回的對象*,而不是返回對象的*屬性*。 – 2013-02-08 15:18:44

+0

是的馬丁R,這是我得出的結論。我想我必須抓住所有員工,過濾他們,並將他們存儲在臨時的地方,而不必接觸所有員工的原始設置。非常感謝。 – trundrumbalind 2013-02-08 15:26:23

回答

2

您想在謂詞中使用SUBQUERY

[NSPredicate predicateWithFormat:@"SUBQUERY(employees, lastName, lastName LIKE[cd] %@)[email protected] > 0", @"Smith"] 

這對每個employees關係的子查詢,檢測lastName的用於所提供的串,並計數存在至少一個這樣的僱員。