2012-05-21 124 views
1

我在我的模型中有兩個實體,ABAB有多對多關係,它的逆與A是一對一的關係。我想如下獲取使用A實體B的結果:核心數據和查詢結果

  1. 對實體A執行讀取請求的一些斷言。
  2. 關於此請求返回的結果,請鑽取所有相關的B,並在第二個謂詞的這些過濾器上鑽取。
  3. 返回實體B的所有有效結果。

當然我可以做(1),然後使用第二個謂詞過濾一個B的數組。但我知道這是不理想的。

即使使用單個提取和謂詞,我怎樣才能最有效地做到這一點?

回答

1

不幸的是,我不確定你在問什麼。如果你提供更多的細節,它肯定會有所幫助。

所以,我只需要猜測...請記住,獲取請求只能返回一種類型的實體。所以,如果你想要的東西是多方關係,取回。

您可以使用您的謂語「」符號...我也很可能做到向下搜索...

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employee"]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"department.name like 'Support'"]; 

有一個從部門1對多的關係員工。上面的內容抓住了名稱中包含「支持」的部門的所有員工。

1

如果您已經持有A的實例,只需通過A的訪問者訪問相關的B實例。

如果您需要直接獲取與某個特定A相關的所有B(您在本例中不是這樣),那麼您將爲B實體構建一個基於(反)關係的謂詞的獲取請求的B到A.(具體語法將取決於反向關係名稱,以及該反向是一對多還是多對多)。