我想通过这些对象的RLMResults
属性的count
对RLMArray
实例包含的对象进行排序。
Person.h:
@interface Person : RLMObject
@property RLMArray *children;
@end
SomeClass.m:
...
RLMResults *people = [Person allObjects];
RLMResults *sorted = [people sortedResultsUsingProperty:@"children.count" ascending:YES];
...
如上所述,使用- sortedResultsUsingProperty:
不起作用,但是会出错:Cannot sort on 'people.count': sorting on key paths is not supported.
解决此问题的最佳方法是什么?
答案 0 :(得分:3)
到目前为止,您只能按实际属性排序。我们希望在此处添加对您要实现的内容的支持,请参阅issue #1277以供参考。目前,您需要引入一个属性childrenCount
,您可以手动维护并与children
保持同步。或者,您可以将结果提取到NSArray
中,并通过Foundation的API以类似的方式对进行排序。
后一个提案可以如下所示实施:
RLMResults *people = [Person allObjects];
NSArray *peopleObjects = [people valueForKey:@"self"];
NSArray *sortedPeople [peopleObjects sortedArrayUsingComparator: ^(Person *a, Person *b) {
return a.children.count < b.children.count
}];