Вы можете использовать «отсортированный» NSMutableArray, и он будет содержать ваши 27 «буквенные» объекты NSMutableArray, каждый из которых содержит ваши объекты.
Вы также можете использовать NSArray из 26 букв (как объекты NSString) и использовать indexOfObject:
, чтобы получить индекс из «отсортированного» массива массива «букв», в который должен быть добавлен объект (если он возвращает NSNotFound , используйте 26 в качестве индекса, поскольку это ваш не альфа-массив).
Например, если вы сортируете объекты NSString, вы можете сделать это следующим образом:
NSArray *originalArray = [NSArray arrayWithObjects:@"A object",@"B object",@"C object",@"123 object",nil];
// init with all 26 lowercase letters here
NSArray *letters = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];
// create sorted and letter arrays
NSMutableArray *sortedArray = [[NSMutableArray alloc] initWithCapacity:[letters count]+1];
for (int i = 0; i < [letters count] + 1; i++) {
// use an appropriate capacity here
NSMutableArray *letterArray = [[NSMutableArray alloc] initWithCapacity:10];
[sortedArray addObject:letterArray];
[letterArray release];
}
// sort originalArray into sortedArray
for (NSString *string in originalArray) {
NSString *firstLetter = [[string substringWithRange:[string rangeOfComposedCharacterSequenceAtIndex:0]] lowercaseString];
int index = [letters indexOfObject:firstLetter];
if (index == NSNotFound) {
// use non-alpha array
index = [letters count];
}
NSMutableArray *letterArray = [sortedArray objectAtIndex:index];
[letterArray addObject:string];
}
NSLog(@"%@",sortedArray);