2011-05-03 70 views
1

我有3个核心数据实体:排序实体 - NSSortdescriptor

实体A和实体B和用户方式一样

实体A < ------ >>实体B < <相关----->用户

我想根据该特定用户的实体B中的条目数来对实体A中的条目进行排序。

我可以这样做:

  • 获取所有实体A项
  • 对于每个条目 - 获取实体B项为入境的数量和当前用户
  • 数条目数为该实体A入口商店,然后排序。

这虽然看起来非常愚蠢。

是否有无论如何我可以通过使用子查询来排序实体A与NSSortDescriptor? 或者如果你知道任何其他方式,我应该解决这个问题?

回答

1

你不能在一个集合操作符上排序,所以没有办法给我们一个排序描述符来做你想要的。子查询和所有谓词一样,只是基于测试找到对象,而不是对它们进行排序。

最简单的解决方案是将一个瞬态属性,例如bCount添加到EntityA。然后有getter方法返回相关EntityB对象计数:

-(NSNumber *) bCount{ 
    return [NSNumber numberWithInt:[self.bs count]]; 
} 

那么你EntityA对象上bCount键排序。

+0

显然不适用于SQLLite商店,如下所述:http://stackoverflow.com/questions/8090397/nssortdescriptor-with-a-function – Resh32 2013-04-11 13:48:03