2013-11-04 49 views
0

我有一個Post對象,旁邊的其他屬性包含一個布爾「隱藏」和一個可能非常長的字符串「內容」。 Feed模型與Post對象具有一對多關係(反轉)。如何啓用對多關係對象屬性的延遲加載?

當我查詢Feed中包含的Post對象,然後只訪問每個獲取的Post對象上的「hidden」屬性時,我可以從Core Data的調試日誌中看到它獲取整個Post對象的屬性。這意味着也從SQLite數據庫中提取「內容」字符串(通常爲3000+個字符)。我發現這會減慢所有Post對象的獲取速度。

如何讓Post對象訪問延遲加載它們的屬性,這意味着當我查詢獲取的Post對象的「隱藏」值時,不會獲取其他參數。

我可能會補充說我使用MagicalRecord來訪問核心數據。

我希望有另一種方法比在手動NSFetchRequest實例上使用「propertiesToFetch」方法。

回答

0

您是否在覈心數據編程指南中閱讀了Faulting and Uniquing
特別注意"Turning Objects Into Faults"

您可以用refreshObject:mergeChanges:方法將已實現的對象變成故障。

如果內存不是問題,但只是性能,你應該求助於NSDictionaryRepresentation類型,只需檢索你需要的屬性。

+0

實際上,我看到的主要問題並不在於獲取Post對象之後的內存消耗,而是Post對象的所有屬性都從數據存儲中獲取,其中我只請求「隱藏」屬性。這會導致每個對象的提取持續時間過長,因爲所有其他屬性的值都是從數據存儲中不必要地讀取的。 – Martin

+0

好的,那麼我想你必須去'NSDictionaryRepresentation'並用'propertiesToFetch'指定你的屬性。另外 - 如果你只是想排除隱藏一次,使用謂詞。 – Mundi

相關問題