У меня есть массив myObjects, который называется arrayToFilter. Один (элемент?) MyObject - это массив безье-путей. Я сравниваю bezierpath по определенному индексу (thispath) со вторым путем и делаю FilterArray, состоящий только из тех объектов, в которых пути перекрывают определенное количество (20%). Я использовал indexedOfObjectsPassingTest, чтобы полюбить это:
NSIndexSet * index = [[arrayToFilter objectsAtIndexes:index] indexesOfObjectsPassingTest:^BOOL (id obj, NSUInteger idx, BOOL *stop){
MyObject * anobject = obj;
UIBezierPath * thispath = [anobject.allPaths objectAtIndex:i];
NSInteger overlap = [self percentPathBoxOverlap:path: thispath];
return overlap>20;
}];
if ([index count] !=0){
filteredArray = [arrayToFilter objectsAtIndexes:index] ;
}
Это отлично работает. Но то, что я хотел бы сделать, это, чтобы FilterArray вышел отсортированным с теми объектами с более высоким значением перекрытия, выходящим первым. Поскольку перекрытие вычисляется на лету на основе текущего пути и этого пути, я не знаю, как использовать какой-либо из методов отсортированного массива.