2016-01-18 82 views
0

我有兩個實體A和B,它們的關係是多對多的。該類實體是這樣的:coredata與fetchedResultController的多對多關係

一個 的NSSet * TOB

乙 的NSSet * TOA

現在我有一個對象,我可以通過使用「TOB得到所有相關乙對象「設置。因爲我需要重新排序B對象,所以我必須使用一個數組來包含所有的B對象,問題是會有成千上萬的B對象,並且我擔心這個數組會佔用太多內存。所以我想知道是否可以使用NSfetchedResultController來獲取所有相關的B對象。問題是我該如何做到這一點?通過使用某種謂詞來獲取?謝謝。

+0

執行當'NSFetchedRequest'可以提供謂詞來過濾結果,或者你可以設置一個請求中的'fetchLimit'。 'NSFetchedResultsController'被設計成與'UITableView'結合使用。此外,系統可以處理數以千計的結果。你真的嘗試過你的請求,看看內存是否是一個問題? – shim

回答

1

使用B作爲獲取結果控制器的實體。添加一個排序描述符。

要限制B s到一個AB S,添加一個謂詞像這樣:

NSPredicate(format: "%@ in toA", anAObject) 
+0

我用了類似toB的東西包含%@,anAobject並且它的工作原理 – user2053760

+0

這是不可能的。 'CONTAINS'(帶有'S')是'NSPredicate'的一個字符串表達式關鍵字。您需要集合操作運算符'IN'。 – Mundi

+0

我使用了: NSPredicate * predicateWordHeader = [NSPredicate predicateWithFormat:@「toPlanDetail contains%@」,self.planDetail]; [requestWordHeader setPredicate:predicateWordHeader]; 它的工作... – user2053760