Core data 核心数据-多久提取一次对象?

Core data 核心数据-多久提取一次对象?,core-data,nsfetchrequest,Core Data,Nsfetchrequest,因此,我做了大量的获取我的对象。例如,在启动时,我在一个选项卡上为徽章设置了一个未读计数。要获取此未读计数,我需要获取我的datamodel对象,以查看哪些对象具有未读标志。好了,我们有机会了。然后,在该方法之后,我对我的所有datamodel对象执行另一次获取,以执行其他操作。然后在视图控制器上,我需要显示我的数据模型对象,以便在那里进行另一次获取,等等 所以有很多这样的调用:NSArray*dataModelObjects=[moc executeFetchRequest:request e

因此,我做了大量的获取我的对象。例如,在启动时,我在一个选项卡上为徽章设置了一个未读计数。要获取此未读计数,我需要获取我的datamodel对象,以查看哪些对象具有未读标志。好了,我们有机会了。然后,在该方法之后,我对我的所有datamodel对象执行另一次获取,以执行其他操作。然后在视图控制器上,我需要显示我的数据模型对象,以便在那里进行另一次获取,等等

所以有很多这样的调用:
NSArray*dataModelObjects=[moc executeFetchRequest:request error:&error]

这对我来说似乎有点多余?由于我将大量使用我的datamodel对象,我是否可以在应用程序中只提取一次它们,并在需要访问它们时通过实例变量访问它们?但我总是想要最新的数据。因此,可以添加和/或删除数据模型对象


我想在这里实现什么有意义吗?

核心数据的概念和好处之一是,您不需要每次需要对象时都访问数据库-这就是创建
NSManagedObjectContext
的原因-它存储从数据库检索的对象,因此,如果您尝试从数据库中获取已经获取的对象,它将非常快

而在
NSManagedObjectContext
中对这些对象所做的每一次更改都会自动提交给您


但是,如果数据库中有一些更改,它们可能不会反映在
NSManagedObjectContext
中,因此您必须刷新它们。您可以阅读有关保持对象最新的信息。

所以我的方法在这里是正确的吗?每次处理对象时都执行提取请求是最佳做法吗?真的,我不这样认为-如果对象相同,则应将其存储为变量,如MyNsManagedObjectClass*object=[[moc executeFetchRequest:request error:&error]lastObject];但是如果你改变了你的请求,并且每次你都改变它,那么这些对象是非常动态的。因此,它们将被创建、删除和修改。因此,我认为最好采用我的方法。每次我需要处理我的对象时,我都会发出一个新的获取请求?它们是否在ame应用程序中被更改?是否在数据库中被更改?如果不是,则不要这样做-您不需要它。使用我的应用程序的用户将创建/修改/删除对象。