- (void)configureSections {
// Get the current collation and keep a reference to it.
self.collation = [UILocalizedIndexedCollation currentCollation];
NSInteger index, sectionTitlesCount = [[self.collation sectionTitles] count];
NSLog(@"%d, %@", sectionTitlesCount, [self.collation sectionTitles]);
NSMutableArray *newSectionsArray = [[NSMutableArray alloc] initWithCapacity:sectionTitlesCount];
// Set up the sections array: elements are mutable arrays that will contain the time zones for that section.
for (index = 0; index < sectionTitlesCount; index++) {
NSMutableArray *array = [[NSMutableArray alloc] init];
[newSectionsArray addObject:array];
}
// Segregate the time zones into the appropriate arrays.
for (APLTimeZoneWrapper *timeZone in self.timeZonesArray) {
// Ask the collation which section number the time zone belongs in, based on its locale name.
NSInteger sectionNumber = [self.collation sectionForObject:timeZone collationStringSelector:@selector(localeName)];
// Get the array for the section.
NSMutableArray *sectionTimeZones = newSectionsArray[sectionNumber];
// Add the time zone to the section.
[sectionTimeZones addObject:timeZone];
}
// Now that all the data's in place, each section array needs to be sorted.
for (index = 0; index < sectionTitlesCount; index++) {
NSMutableArray *timeZonesArrayForSection = newSectionsArray[index];
// If the table view or its contents were editable, you would make a mutable copy here.
NSArray *sortedTimeZonesArrayForSection = [self.collation sortedArrayFromArray:timeZonesArrayForSection collationStringSelector:@selector(localeName)];
// Replace the existing array with the sorted array.
newSectionsArray[index] = sortedTimeZonesArrayForSection;
}
self.sectionsArray = newSectionsArray;
}