1

所以我有一个名为 Church 的自定义对象的 NSArray。每个教堂都有一系列的弥撒时间。所以教堂里有一种方法可以计算最接近用户当前时间的质量。

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

我希望能够通过该方法为每个对象返回的结果(即 NSDate)对 Church 的 NSArray 进行排序。基本上是为了得到一个按最近时间和位置排序的质量列表。

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

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

4

2 回答 2

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];
}];
于 2012-06-14T14:03:10.370 回答
1

在您的类中创建一个新方法,该方法采用另一个 Church 类并返回NSOrderedSame,NSOrderedAscendingNSOrderedDescending,具体取决于您希望该对象是第一个还是最后一个。用你的closestTimeTo方法找出来。然后用你的方法使用NSArray'sortedArrayUsingSelector调用。

于 2012-06-14T14:04:08.280 回答