Получил массив словаря, как это:
(
{ order = "10";
name = "David"
};
{ order = "30";
name = "Jake";
};
{ order = "200";
name = "Michael";
};
)
Когда я использую NSSortDescriptor, как и приведенный ниже код, он сортирует только по первому символу, поэтому 200 меньше 30. Я, конечно, могу изменить объект "order" на NSNumber вместо строки, и это будет работать. Но есть ли способ отсортировать строку как значения int без изменения исходного объекта?
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"norder" ascending:YES];
[departmentList sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
Обновление:
Благодаря Бандехапайсе.
Вот рабочая версия для iOS 5 (Xcode, где компилирование).
NSArray *sortedArray;
sortedArray = [departmentList sortedArrayUsingComparator:(NSComparator)^(id a, id b) {
NSNumber *num1 = [NSNumber numberWithInt:[[a objectForKey:@"norder"] intValue]];
NSNumber *num2 = [NSNumber numberWithInt:[[b objectForKey:@"norder"] intValue]];
return [num1 compare:num2];
}];
departmentList = [sortedArray mutableCopy];