我有一个父实体,它有许多Child。如果我使用属性(例如名称)命令父获取,一切正常。但如果我试试这个:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"child.@count" ascending:NO];
它不起作用。我也尝试添加
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObject:[entityProperties objectForKey:@"child"]]];
但它也不起作用。
我是否允许按照多次排序。@ count或我是否需要添加属性并在每次添加孩子时更新它?
答案 0 :(得分:8)
假设您使用的是sqlite商店;您不能按@count
排序,因为它在“对象”级别解析,而NSSortDescriptor
上的NSFetchRequest
在数据库级别解析。因此,正如您猜测的那样,您需要创建一个计数属性来进行排序。
如果您使用的是二进制或内存存储类型,那么count应该可以正常工作,因为它们只能作为对象访问。