在我的数据模型中,我有两个实体:
类别和项目。
分类
attr:姓名
rel:parent(目的地:Category,Inverse:subCategories)
rel:subCategories(目的地:类别,反向:父母,多对多关系)
rel:items(目的地:Item,Inverse:category,To-Many Relationship)
物品
attr:title
rel:category(目的地:类别,反向:项目,多对多关系)
获得以下TVC:Root,Category和Item
Root显示没有父项的所有Category对象
类别显示具有特定父对象的所有Category对象
项目显示具有特定类别的所有项目对象
示例数据:
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
答案 0 :(得分:5)
有三种方法可以计算:
触发相关顶级类别的获取请求,并从该对象获取其子类别关系集中的实体计数。这种方法的缺点是它将导致CoreData
从商店获取关系属性,获取与该关系相关联的每个对象。 e.g。
NSManagedObject *topCat = [context performFetch:topCatFetchRequest];
NSInteger count = topCat.subCategories.count;
使用原始SQLite
API直接查询数据存储(请注意这要快得多)。
NSManagedObjectContext
countForFetchRequest:
,它将返回与给定获取请求匹配的对象数。