假設我們有一個名爲「Document」的實體,另一個名爲「User」。有多對多的關係,用戶可以擁有一組文檔,每個文檔可以由多個用戶擁有。其他文檔具有「類型」屬性。對多個實體的核心數據過濾
現在我想爲類型爲「pdf」的用戶x提取所有文檔。你將如何訪問這些數據?
至於我可以看到有兩種方式:
檢索用戶的所有文件,其關係(user.documents)和過濾與NSPredicate陣列(做這項工作具有複雜目的?)。
用兩個謂詞對「文檔」實體執行提取請求。第一個指定用戶,第二個負責該類型。
哪種方法更好?還是有更好的方法來實現這一目標? 我想第二個解決方案要貴得多。
這是比第一種方式更有效?再次獲取用戶似乎是不必要的,因爲我已經有一個用戶對象引用其文檔。 – Dominik
上面的謂詞將使用單個SQL查詢爲您的userX獲取所有PDF文檔。即使你有文檔的引用,但它們可能是錯誤的,所以過濾一個數組可能會導致每個單獨文檔的SQL查詢被觸發 - 效率更低。 –
要查看執行了哪些SQL查詢,請將'-com.apple.CoreData.SQLDebug 1'添加到啓動參數 –