【问题标题】:CoreData: how to get the total countCoreData:如何获得总数
【发布时间】:2014-09-09 18:50:33
【问题描述】:

在我的数据模型中,我有两个实体:
类别和项目。

类别
属性:名称
rel:父(目标:Category,反向:subCategories)
rel: subCategories (Destination: Category, Inverse: parent, To-Many Relations)
rel: items (Destination: Item, Inverse: category, To-Many Relations)

物品
属性:标题
rel:类别(目标:类别,逆:项目,多对多关系)

获得以下 TVC:根目录、类别和项目
Root 显示所有没有父级的 Category 对象
Category 显示具有某个父对象的所有 Category 对象
Item 显示某个类别的所有 Item 对象

示例数据:

顶级猫 1 - 子猫 1 - 项目 1 - 项目 2 - 项目 3 - 项目 4 - 子猫 2 - 项目 1 - 子猫 3 - 项目 1 - 子猫 4 - 项目 1 - 项目 2 - 子猫 5 顶级猫 2 - 子猫 1 - 项目 1 - 项目 2 - 项目 3 - 子猫 2 - 项目 1 - 子猫 3 - 项目 1

那么,在根 TVC 中,如何获取每个“Top Cat”的项目总数?
如果我想知道“Sub cat”的数量,我可以使用以下 keyPath:“subCategories.@count”,但是像“subCategories.items.@count”这样的东西不起作用。

希望你能帮助我。

干杯 -我

【问题讨论】:

    标签: iphone objective-c core-data


    【解决方案1】:

    有三种方式获取计数:

    1. 针对有问题的顶级类别触发提取请求,并从该对象获取其子类别关系集中的实体计数。这种方法的缺点是它会导致CoreData 从存储中获取关系属性,获取与该关系关联的每个对象。例如

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

    2. 使用原始的SQLite API 直接查询数据存储(注意这要快得多)。

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

    【讨论】:

      猜你喜欢
      • 2018-04-01
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 2014-01-23
      • 2013-06-07
      • 1970-01-01
      相关资源
      最近更新 更多