2

我正在尝试获取其中一个关系中计数最少的实体。该实体称为解决方案,它具有称为 gamesFeaturedIn 的一对多关系,其中链接到 Game 对象。所以我这样做(使用 RestKit 便利方法):

Solution* lowestPlayedSolution = [Solution findFirstWithPredicate: nil sortedBy: @"gamesFeaturedIn.@count" ascending: NO];
NSUInteger lowestPlayedCount = [lowestPlayedSolution.gamesFeaturedIn count];

这会引发错误:

'包含不应该有的 KVC 聚合的密钥路径;无法处理 gamesFeaturedIn.@count'

几年前我发现了一些类似问题的帖子。也许事情已经发生了变化,旧帖子没有给出任何明确的答案来说明如何在不将所有对象提取到内存并手动执行计算的情况下做到这一点。任何人?

编辑:核心数据存储是 SQLite 支持的,所以我不能使用瞬态属性进行排序。

4

2 回答 2

1

很抱歉告诉你这个坏消息,但事情并没有改变,至少在 iOS5 中是这样。主要有两种解决方法,都相当不优雅。

  1. 你提到的那个,你在内存中进行排序。
  2. 您创建一个非瞬态属性来存储计数并在每次添加或删除关系中的项目时更新它。
于 2012-06-20T09:11:09.123 回答
0

为该属性创建一个临时属性 (relationshipCount) 和一个访问器,您可以在其中返回该关系的计数。您现在可以对此属性进行排序。

于 2012-06-20T07:38:26.693 回答