2010-11-03 93 views
1

在我的数据模型中,我有两个实体:
类别和项目。CoreData:如何获得总数

类别
ATTR:命名
REL:父(目的地:类别,逆:子类别)
REL:子类别(目的地:类别,反:父母,一对多的关系)
REL:项目(目的地:项目,反:类别,一对多的关系)

项目
ATTR:标题
REL:类(目的地:类别,反:项目,一对多的关系)

得到以下TVC的:根,类别和项目
根显示所有类别的对象没有父
分类显示所有类别具有一定的父对象的对象
项目显示所有Item对象与特定类别

实施例的数据:

 
Top Cat 1 
- Sub cat 1 
- Item 1 
- Item 2 
- Item 3 
- Item 4 
- Sub cat 2 
- Item 1 
- Sub cat 3 
- Item 1 
- Sub cat 4 
- Item 1 
- Item 2 
- Sub cat 5 
Top Cat 2 
- Sub cat 1 
- Item 1 
- Item 2 
- Item 3 
- Sub cat 2 
- Item 1 
- Sub cat 3 
- Item 1 

那么在Root TVC中,如何获得每个“Top Cat”的项目总数?
如果我想知道“子猫”的数量,我可以使用下面的keyPath:“subCategories。@ count”,但是像“subCategories.items。@ count”不起作用。

希望你能帮助我。

干杯 -Me

回答

5

有三种方式获取计数:

  1. 消防取回有问题的顶级类别的请求,并从该对象获取实体的数量在它的子 - 类别关系集。这种方法的缺点是它会导致CoreData从商店获取关系属性,获取与该关系相关的每个对象。例如

    NSManagedObject *topCat = [context performFetch:topCatFetchRequest]; NSInteger count = topCat.subCategories.count;

  2. 使用RAW SQLite API的直接查询的数据存储(注意,这是更快)。

  3. 可能是最简单的,使用NSManagedObjectContextcountForFetchRequest:,它将返回匹配给定获取请求的对象数。