AddressBook 聯繫人字母排序法

由於網上資料少,在此獻出一點心得;

以下是按照字母排序取得的聯繫人


// 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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章