NSSortDescriptor与多对多关系

时间:2011-10-20 16:42:38

标签: core-data

我有一个父实体,它有许多Child。如果我使用属性(例如名称)命令父获取,一切正常。但如果我试试这个:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"child.@count" ascending:NO];

它不起作用。我也尝试添加

[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObject:[entityProperties objectForKey:@"child"]]];

但它也不起作用。

我是否允许按照多次排序。@ count或我是否需要添加属性并在每次添加孩子时更新它?

1 个答案:

答案 0 :(得分:8)

假设您使用的是sqlite商店;您不能按@count排序,因为它在“对象”级别解析,而NSSortDescriptor上的NSFetchRequest在数据库级别解析。因此,正如您猜测的那样,您需要创建一个计数属性来进行排序。

如果您使用的是二进制或内存存储类型,那么count应该可以正常工作,因为它们只能作为对象访问。