所以我有一个名为Church的自定义对象的NSArray。每个教堂都有一系列的群众时光。因此教会中有一种方法可以计算出与用户当前时间最接近的质量。
-(NSDate *)closestTimeTo:(NSDate *)currentTime
我希望能够通过该方法为每个对象返回的结果(NSDate)对Church的NSArray进行排序。基本上是获得按最近时间和位置排序的按质量排序列表。
我正在使用类别,因为它是核心数据对象,所以无法将最接近的时间存储为属性。我也不认为将这些值保存到核心数据是个好主意,因为这些方法会因位置服务而不断调用。
关于如何使用对象方法的结果对数组进行排序的任何想法?
答案 0 :(得分: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];
}];
答案 1 :(得分:1)
在您的班级中创建一个新方法,该方法需要另一个Church类并返回NSOrderedSame
,NSOrderedAscending
或NSOrderedDescending
,具体取决于您是希望该对象是第一个还是最后一个。使用closestTimeTo
方法找出答案。然后使用NSArray
sortedArrayUsingSelector
调用您的方法。