Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否可以按RLMRAY属性的计数对RLMResults进行排序?_Ios_Objective C_Realm - Fatal编程技术网

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
是一个只读数据结构,用于表示查询结果,而无需将一个类的所有对象拉入内存。您不能自己实例化此类的对象。所以没有办法转换。