В настоящее время я пытаюсь реализовать UITableView с delegate и источник данных, который как можно точнее повторяет найденную функциональность ABAddressBookUI framework ABPeoplePickerNavigationController, но с добавленной возможностью выбора нескольких контактов одновременно ( как указано добавлением/удалением дополнительного вида на соответствующий UITableViewCell).
Все работает нормально, за исключением предоставления локализованных "заголовков индексов раздела" (буквы, которые появляются в наброске прокрутки справа от экрана) для UITableView, как должен быть возвращен методом источник данных:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
Очевидно, я мог бы просто вернуть NSArray, содержащий NSStrings A, B, C... Z, но в идеале мне бы хотелось, чтобы этот метод возвращал массив всех (в верхнем регистре, где применимо) букв алфавита текущей локали.
Одним из перспективных направлений было:
[[NSLocalecurrentLocale ] objectForKey:@"NSLocaleExemplarCharacterSet" ]
Но я не могу найти существенную документацию по этому вопросу, и он возвращает NSCharacterSet, из которого я не смог извлечь фактические символы (если бы я мог это сделать, то NSCharacterSet capitalizedLetterCharacterSet также может стать многообещающей отправной точкой).
Я также запускал otool -tV на AddressBookUI, в котором был обнаружен вызов функции ABAddressBookCopySectionIndices(), в которую можно передать ABAddressBookRef, чтобы получить именно то, что Я ищу... CFArray локализованного алфавита. Однако это частная функция, поэтому я не могу использовать ее в своем приложении.
Итак, кто-нибудь знает, поддерживает ли Cocoa Touch эту функцию? И, если нет, есть ли какие-либо идеи относительно того, как ABAddressBookCopyIndices() работает над своей магией? Я подозреваю, что библиотека International Components for Unicode может содержать ключ, но я пока еще не знаю его возможностей...