2013-11-26 13 views
0

核心數據具有內置緩存機制,並自動將其用於對象提取和錯誤相關操作,但我找不到任何有關修改此默認緩存行爲的文檔或文章。 有沒有辦法增加或減少Core Data的默認緩存? 我正在考慮製作一種容量爲NSManagedObject的容器,以減少從持久存儲中加載數據的開銷,但不確定這是不是一個好主意。如何調整Core Data的默認緩存的行爲或大小?

回答

1

據我所知,CoreData不公開任何通用API來控制其緩存行爲。
可以通過使用控制給定上下文的對象圖的大小:

[context refreshObject:<obj> mergeChanges:NO]; 

或由正在重置上下文完全:

[context reset]; 

更多信息參見here
This也可能是感興趣的。

您打算構建的容器聽起來像是NSPersistentStoreCoordinator,它是保存對象的緩存/快照或給定的NSManagedObjectContext中的註冊對象。

在我看來,沒有理由爲CoreData「推出自己的」緩存,因爲這正是您使用該框架免費獲得的內容。
您的容器必須保持上下文(不能在上下文之間共享對象)和對象ID鎖定對象,因此該效果將與調用[context objectRegisteredForID:<objectID>];或訪問上下文當前現有對象的其他方法相同。

如果需要在上下文之間傳輸瞬態屬性,並且重新計算它們或從頭開始獲取它們的值,則需要一個容器。

相關問題