Нет магии, но и она не бесплатна.:) Вы ищете -[NSArray sortedArrayUsingComparator:]
.Если ваш массив NSMutableArray
, то вы можете использовать -[NSMutableArray sortUsingComparator:]
.
. Компаратор - это блок, который возвращает NSComparisonResult
и принимает два объекта.Вот определение в NSObjCRuntime.h
:
typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
Блок должен брать объекты, приводить их к словарям, извлекать значения NSV из каждого обратно в риты и возвращать результат сравнения полей координат X.*
Psuedocode, предполагая NSMutableArray
:
[myArray sortUsingComparator:^(id obj1, id obj2) {
NSDictionary *dict1 = (NSDictionary *)obj1;
NSDictionary *dict2 = (NSDictionary *)obj2;
// Extract each of the NSValues
// Compare the x values
if (xValue1 == xValue2) return NSOrderedSame;
return (xValue1 < xValue2) ? NSOrderedAscending : NSOrderedDescending;
}];