2012-06-14 24 views
1

所以我有一个名为Church的自定义对象的NSArray。在每个教堂里都有一批群众时代。所以教堂里有一种方法可以计算出与用户当前时间最接近的质量。按对象方法的结果排序NSArray

-(NSDate *)closestTimeTo:(NSDate *)currentTime 

我希望能够通过对每个对象方法返回的结果(这是NSDate的),以教会的NSArray的排序。基本上可以获得按照最近时间和地点排序的大众分类列表。

我正在使用类别,因为它是核心数据对象,因此无法将最近的时间存储为属性。我也不认为将这些值保存到核心数据是一个好主意,因为这些方法将由于位置服务而不断调用。

有关如何使用其对象方法的结果对此数组进行排序的任何想法?

回答

2

尝试以下块。它会直接帮助(或至少稍作修改)。

NSArray *sortedArray; 
sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { 
    NSDate *first = [(Church*)a closestTimeTo:currentTime]; 
    NSDate *second = [(Church*)b closestTimeTo:currentTime]; 
    return [first compare:second]; 
}]; 
+0

工作完美!谢谢 – ChrisBorg

+0

@ChrisBorg。欢迎! – Vignesh

1

让你的类的新方法,该方法的另一个教会类和返回NSOrderedSameNSOrderedAscendingNSOrderedDescending,这取决于你是否希望该对象是第一个或最后。用你的closestTimeTo方法找出来。然后用你的方法使用NSArraysortedArrayUsingSelector呼叫。

+0

听起来很有趣,我将不得不尝试这些类型 – ChrisBorg