Ios 如何在没有多对多关系的情况下获取实体
我有一个模型,其中有一个名为“Category”的实体。该类别具有一对多关系,称为“产品”。如何设置fetch请求以仅获取类别实体而不获取产品?查看NSFetchRequest的文档 您可以设置“includeSubentities”和“returnsObjectsAsFaults”,以限制从模型(产品)的核心数据返回的数据Ios 如何在没有多对多关系的情况下获取实体,ios,core-data,nsfetchrequest,Ios,Core Data,Nsfetchrequest,我有一个模型,其中有一个名为“Category”的实体。该类别具有一对多关系,称为“产品”。如何设置fetch请求以仅获取类别实体而不获取产品?查看NSFetchRequest的文档 您可以设置“includeSubentities”和“returnsObjectsAsFaults”,以限制从模型(产品)的核心数据返回的数据 如果查询类别,则产品元素将作为故障加载。这是CoreData的默认行为 相反,如果使用-(void)setRelationshipKeyPaths预取:(NSArray*)
如果查询
类别
,则产品元素将作为故障加载。这是CoreData的默认行为
相反,如果使用-(void)setRelationshipKeyPaths预取:(NSArray*)键
,则可以在执行请求时加载(预取)产品
从
出错会减少应用程序所消耗的内存量。A.
fault是一个占位符对象,表示
尚未完全实现,或收集对象
表示一种关系:
托管对象错误是相应类的实例,但
它的持久变量尚未初始化。感情上的过失
是集合类的子类,表示
关系断层使岩芯数据能够将边界置于
对象图。由于未实现故障,因此将发生托管对象故障
占用更少的内存,并且与故障相关的托管对象不可用
需要在内存中表示
及
预取实际上是
批处理错误,在另一次提取后立即执行。想法
预取的背后是对未来需求的预期。当你
拿一些东西,有时候你知道,不久之后你也会
需要可能由故障表示的相关对象。避开
单个故障触发效率低下,您可以预取
目标位置的对象
编辑
如果需要计算特定类别的产品数量,请使用以下请求使用-(NSUInteger)countForFetchRequest:(NSFetchRequest*)请求错误:(NSError**)error
:
NSFetchRequest* request = // set up a request for Products
[request setPredicate:[NSPredicate predicateWithFormat:@"toCategory == %@", currentCategory]];
// count for fetch request here...
其中
toCategory
是Products
与Category
的反向关系,currentCategory
是您拥有的类别。好的。。。只是为了澄清,这意味着如果我检查我类别中的产品数量,它会显示相关产品的实际数量,但这些产品不会消耗任何内存,因为它们尚未实例化?!只要我想访问一个产品,Core Data就会从持久存储中动态检索它?@ASP是的,但您应该注意故障。如果您访问任何类别的属性,那么它将触发一个错误(核心数据将往返并为您检索数据)。我添加了一个编辑。