使用MagicalRecord进行CoreData内存设置3

问题描述:

你好我正在使用CoreData + MagicalRecord 3来管理我的应用程序中的数据。在那之前一切工作正常,但是后来我意识到在生产中比我的应用程序冻得像地狱! 所以我开始调查了解事实,不卡住用户界面,最好有一个主要背景和背景环境,并保存在背景等东西...使用MagicalRecord进行CoreData内存设置3

不过,我必须质疑,由于我的设置。我使用CoreData内存中存储系统(为了获得最佳性能),并且我不在乎将数据存储在我的应用程序的磁盘上,我很好地处理了易失性模型,该应用程序在被杀或处于后台时将被销毁时间过长。我只是希望能够从任何视图控制器中找到我的数据,而无需耦合。

所以我有几个问题: 1)如果我将使用1个独特的上下文,如果我从不将它保存到内存存储会发生什么?例如,如果我MR_createEntity,那么我从上下文中检索这个实体并更新它,它是否到处更新或者我是否必须保存它才能更新?换句话说,您不希望永久保存数据的情况下,是否希望在内存中保存内容? 2)如果我使用1个独特的上下文,我声明为背景,如果我显示我的屏幕之前我的数据完成保存,屏幕将无法找到并显示我的数据吗?除非我使用NSFetchResultController吗?

1)您想要保存数据,即使存储在内存中的原因有几个。首先,在可能改变主意并坚持数据的情况下,可以正确使用核心数据。其次,您可能希望访问和处理不同线程/队列中的一些数据。在这种情况下,您将不得不为线程/队列使用Core Data的数据安全机制。该商店是Core Data跨线程同步数据的最低级别(旧方式)。如果您使用嵌套上下文同步数据(新方法),这可能不那么重要。但即使使用嵌套上下文,您仍然需要调用保存以使您的更改跨上下文进行合并。核心数据并不是真的喜欢它,当你保存到零店。

2)您可以制作和使用自己的上下文来显示数据。 NSFetchedResultsController在倾听正确的通知并确保您首先获得您要求的数据的特定更新方面做了大量工作。 NSFRC并不总是必要的,但肯定会是最简单的开始。