Ios 是否可以按RLMRAY属性的计数对RLMResults进行排序?
我想根据Ios 是否可以按RLMRAY属性的计数对RLMResults进行排序?,ios,objective-c,realm,Ios,Objective C,Realm,我想根据RLMArray属性的count对RLMResults实例包含的对象进行排序 第h人: @interface Person : RLMObject @property RLMArray *children; @end SomeClass.m: ... RLMResults *people = [Person allObjects]; RLMResults *sorted = [people sortedResultsUsingProperty:@"children.count" a
RLMArray
属性的count
对RLMResults
实例包含的对象进行排序
第h人:
@interface Person : RLMObject
@property RLMArray *children;
@end
SomeClass.m:
...
RLMResults *people = [Person allObjects];
RLMResults *sorted = [people sortedResultsUsingProperty:@"children.count" ascending:YES];
...
如上所述使用-sortedResultsUsingProperty:
不起作用,但是,给出一个错误:无法对“people.count”进行排序:不支持对关键路径进行排序。
解决此问题的最佳方法是什么?到目前为止,您只能按实际属性排序。我们想在这里为您想要实现的目标添加支持,请参阅以供参考。现在,您需要引入一个属性
childrenCount
,您可以手动维护该属性,并与childrenCount
保持同步。或者,您可以将结果提取到NSArray
中,并通过基金会的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
}];
RLMResults*people=[Person allObjects];
NSArray*peopleObjects=[people valueForKey:@“self”];
NSArray*sortedPeople[使用比较器对People对象进行排序:^(人员*a,人员*b){
返回a.children.count
我想您可能只是语法有点错误,如果您尝试使用children@count怎么办?我也尝试过,但在这两种情况下都会出现相同的错误:无法对“people@count”进行排序:不支持对关键路径进行排序。
感谢您的回复!但是,如果我将结果提取到NSArray
,我仍然无法使用@“children.count”键对NSSortDescriptor
进行排序
因为我得到了错误这个类不符合键值编码的键值计数。
你有其他排序方法的建议吗?你必须使用@count
。但事实证明,进一步的技术限制将阻止你使用NSSortDescriptor
:我们的集合类型确实不是但符合KVC收集运营商的要求。这是一个由。因此,您需要进行排序,例如使用提供的基于块的API。@marius您能告诉我如何将NSArray转换为RLResults吗?@user3182143:NSArray
是一个基于基础的集合,可以保存任意单个对象。RLMResults
是一个只读数据结构,用于表示查询结果,而无需将一个类的所有对象拉入内存。您不能自己实例化此类的对象。所以没有办法转换。