按特定属性Core Data的count()排序

时间:2012-03-23 06:59:42

标签: sql core-data count core-data-migration

所以我基本上试图选择整个对象,对于按多对一关系中特定属性的出现次数排序的前10个对象。

基本上在一个表中,我有一个'id'属性,映射到另一个表。可以有任意数量的重复出现的id,我希望得到最常出现的10个对象。

我可以在sql中处理这个问题,但不知道如何在核心数据中实现equivelent?

这是我在sql中得到的:

SELECT *, count(id) AS count FROM ____ ORDER BY count DESC LIMIT 0,10

非常感谢所有人的帮助!非常感谢

1 个答案:

答案 0 :(得分:0)

我很难理解我是否正确理解了这个问题,或者你的预期行为是什么:对结果进行排序。例如,如果count(“some_specific_id”)> 10,那么你想要回10个对象?这有关系吗?

除了这个问题,我不确定你是否能够轻松或有效地做到这一点。

鉴于(据我所知):

  1. 你有实体Foo和Bar之间的关系。 Foo.bar与Bar是一对一的关系,而Bar.foo是与Foo的多对多关系。
  2. 您需要10个Foo对象,即与您的SQL语句匹配的对象。
  3. 这是接近它的一种方法:

    1. 获取所有Bar实体。
    2. 按“foo。@ count”排序该数组,降序。
    3. 开始枚举已排序的Bar数组,并为每个对象从其名为foo的NSSet属性中获取Foo对象,直到您有10个为止。
    4. 在没有获取所有Bar实体的情况下,我无法通过Apple的文档找到任何方法来执行此操作。有关您的特定实体的更多信息,您可能能够更聪明地找到更好的信息。浮动的其他建议说,如果你真的想知道Bar-> Foo关系中的对象数,请将其保存在一个单独的属性中。然后你可以通过fooCount来获取Bar的值,并且限制为10,因为这将是查找10个Foo对象所需的上限。

相关问题