由於網上資料少,在此獻出一點心得;
以下是按照字母排序取得的聯繫人
// ABPersonGetSortOrdering() = kABPersonSortByFirstName / kABPersonSortByLastName
// ABPersonGetSortOrdering() 表示 姓 和 名 排序狀態,共有兩種 :
kABPersonSortByFirstName 以第一名稱排序
kABPersonSortByLastName 以第二名稱排序
+ (NSMutableArray*)SortAllContacts:(ABAddressBookRef)addressBook
{
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(kCFAllocatorDefault,
CFArrayGetCount(people),
people);
CFArraySortValues(peopleMutable,
CFRangeMake(0, CFArrayGetCount(peopleMutable)),
(CFComparatorFunction) ABPersonComparePeopleByName,
(void*) ABPersonGetSortOrdering());
NSMutableArray *array = [NSMutableArray arrayWithCapacity:((NSMutableArray *)peopleMutable).count];
for (id person in ((NSMutableArray *)peopleMutable)) {
[array addObject:person];
}
CFRelease(people);
CFRelease(peopleMutable);
return array;
}