核心数据的复杂排序标准

时间:2012-02-14 21:54:15

标签: ios sorting core-data

我正在尝试对存储在核心数据中的记录进行排序,但存在一些问题。详细地说,我有两个主要问题:

1#根据子记录排序条件:

我有两个实体(父亲和孩子)有1:M的关系,所以一个父亲可以有更多的孩子。 我想基于年龄较大的孩子的名字来执行一种父亲的记录。所以基本上,我应该对某个父亲的子记录进行搜索并检索具有最大年龄的孩子的名字,并根据这些信息做一些父亲。我怎么写sortdescriptor?

2#根据计算排序条件:

我的实体中有一个地址列表。对于每一行,我有一个相应纬度的列和一个经度的列。根据当前位置,我想从最近到最远的位置对这些记录进行排序。由于距离取决于用户位置,因此它是可变信息,因此不会存储在我的核心数据表中。那么,如何对这些记录进行排序?什么是最好的方法?

每一个建议都会非常感激!

提前谢谢你,yassa

1 个答案:

答案 0 :(得分:1)

你能对结果集使用一些比较操作吗?

比较方法

- (NSComparisonResult)compare:(Person *)otherObject {
    return [self.child compare:otherObject.child];
   }

NSArray *sortedArry;
sortedArry = [parentArray sortedArrayUsingSelector:@selector(compare:)];

<强> BLOCKS

NSArray *sortedArry;
sortedArry = [parentArray sortedArrayUsingComparator:^(id a, id b) {
   NSString *first  = (Child*)a.name;
   NSDate   *second = (Child*)b.name;
   return [first compare:second];
}];

<强> NSSortDescriptor

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"child.name"
                                          ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArry;
sortedArry = [parentArray sortedArrayUsingDescriptors:sortDescriptors];

我很想知道你的答案是什么。我有类似的问题。