Лично я бы сделал простой класс с именем Name, у которого есть свойство для firstName и свойство для lastName.Затем вы можете перебрать массив и создать свои экземпляры Name, добавить их в NSMutableArray и затем отсортировать массив.Вы можете, конечно, пойти по маршруту словаря.
Вот пример:
NSMutableArray *namesList = [NSMutableArray arrayWithCapacity:0];
for (NSString *name in originalArray) {
NSArray *tempArray = [name componentsSeparatedByString:@" "];
Name *newNameInstance = [[Name alloc] init];
newNameInstance.firstName = [tempArray objectAtIndex:0];
newNameInstance.lastName = [tempArray objectAtIndex:1];
[namesList addObject:newNameInstance];
}
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"lastName"
ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [namesList sortedArrayUsingDescriptors:sortDescriptors];
Этот код не был проверен, но он должен работать.Я не позаботился об управлении памятью, поэтому помните об этом.
Обновление Извините, должно быть [tempArray objectAtIndex: 0].Исправлено выше.
Поскольку firstName и lastName являются строками, они должны быть объявлены как NSString.Старайтесь не использовать идентификатор для свойства, если у вас нет действительно веской причины.
Обновление 2 Если вы хотите проверить значения, сделайте следующее:
for (Name *name in sortedArray) {
NSLog(@"%@", name.firstname);
NSLog(@"%@", name.lastName);
}