2016-03-01 116 views
0

你好我正在使用CoreData + MagicalRecord 3來管理我的應用程序中的數據。在那之前一切工作正常,但是後來我意識到在生產中比我的應用程序凍得像地獄! 所以我開始調查瞭解事實,不卡住用戶界面,最好有一個主要背景和背景環境,並保存在背景等東西...使用MagicalRecord進行CoreData內存設置3

不過,我必須質疑,由於我的設置。我使用CoreData內存中存儲系統(爲了獲得最佳性能),並且我不在乎將數據存儲在我的應用程序的磁盤上,我很好地處理了易失性模型,該應用程序在被殺或處於後臺時將被銷燬時間過長。我只是希望能夠從任何視圖控制器中找到我的數據,而無需耦合。

所以我有幾個問題: 1)如果我將使用1個獨特的上下文,如果我從不將它保存到內存存儲會發生什麼?例如,如果我MR_createEntity,那麼我從上下文中檢索這個實體並更新它,它是否到處更新或者我是否必須保存它才能更新?換句話說,您不希望永久保存數據的情況下,是否希望在內存中保存內容? 2)如果我使用1個獨特的上下文,我聲明爲背景,如果我顯示我的屏幕之前我的數據完成保存,屏幕將無法找到並顯示我的數據嗎?除非我使用NSFetchResultController嗎?

回答

1

1)您想要保存數據,即使存儲在內存中的原因有幾個。首先,在可能改變主意並堅持數據的情況下,可以正確使用核心數據。其次,您可能希望訪問和處理不同線程/隊列中的一些數據。在這種情況下,您將不得不爲線程/隊列使用Core Data的數據安全機制。該商店是Core Data跨線程同步數據的最低級別(舊方式)。如果您使用嵌套上下文同步數據(新方法),這可能不那麼重要。但即使使用嵌套上下文,您仍然需要調用保存以使您的更改跨上下文進行合併。核心數據並不是真的喜歡它,當你保存到零店。

2)您可以製作和使用自己的上下文來顯示數據。 NSFetchedResultsController在傾聽正確的通知並確保您首先獲得您要求的數據的特定更新方面做了大量工作。 NSFRC並不總是必要的,但肯定會是最簡單的開始。

相關問題