Как отсортировать контактную книгу iphone?
Как я могу сортировать (или получать отсортированный массив) контактную книгу iphone по имени и фамилии программным способом
Любая помощь будет хорошо оценена...!
Благодаря
Ответы
Ответ 1
Вызвать ABAddressBookCopyArrayOfAllPeople()
, чтобы получить массив всех записей человека в адресной книге. Затем следуйте документации:
Чтобы отсортировать массив людей, используйте функцию CFArraySortValues с функцией ABPersonComparePeopleByName как компаратор и контекст типа ABPersonSortOrdering. Желаемый порядок сортировки пользователей, как было возвращено ABPersonGetSortOrdering, обычно является предпочтительным контекстом.
В следующем списке кодов показан пример сортировки всей базы данных адресной книги:
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(
kCFAllocatorDefault,
CFArrayGetCount(people),
people
);
CFArraySortValues(
peopleMutable,
CFRangeMake(0, CFArrayGetCount(peopleMutable)),
(CFComparatorFunction) ABPersonComparePeopleByName,
(void*) ABPersonGetSortOrdering()
);
CFRelease(addressBook);
CFRelease(people);
CFRelease(peopleMutable);
Ответ 2
Как насчет: -
ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering
объявленный в ABPerson.h
Ответ 3
Я использую приведенный выше код (из утвержденного ответа) для копирования адресной книги с iPhone, а также использовал ABPersonComparePeopleByName
для сортировки адресной книги. Но обнаружил, что он будет иметь разные результаты сортировки для одной и той же адресной книги, когда международный язык iPhone отличается. Предположим, что разумно сортировать разные языки на основе разных критериев. Таким образом, в нашем проекте мы имеем "en.lproj".. "zh-hant.lproj"... "ja.lproj", In NSCalendar
, у нас также есть настройка "locale". Поэтому я думаю, как установить критерии для ABPersonComparePeopleByName
и попросить Apple. Очень полезный ответ: " порядок сортировки не предсказуем".
Соответствующая часть ответа Apple ниже:
Это нормальное поведение. Сортировка на разных языках на самом деле является невероятно сложной проблемой, когда ожидания пользователя сильно различаются в зависимости от языка/местоположения. Честно говоря, ваш лучший вариант - скорректировать ваши ожидания и предположить, что порядок сортировки не предсказуем. Любой другой подход, скорее всего, вызовет раздражение и запутает многих международных пользователей.
Кевин
Кевин Эллиот, инженер DTS, kevin_elliott @apple, com