ABAddressBook store values in NSDictionary

前端 未结 3 1618
执念已碎
执念已碎 2021-01-07 04:30

I have an app that displays ABAddressBook contacts in a UITableView. Currently I\'m reading the contacts into an NSDictionary, however

3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-07 05:05

    A different way using ARC:

    ABAddressBookRef addressBook = ABAddressBookCreate();
    CFArrayRef addressBookData = ABAddressBookCopyArrayOfAllPeople(addressBook);
    
    CFIndex count = CFArrayGetCount(addressBookData);
    
    NSMutableArray *contactsArray = [NSMutableArray new];
    
    for (CFIndex idx = 0; idx < count; idx++) {
        ABRecordRef person = CFArrayGetValueAtIndex(addressBookData, idx);
    
        NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
    
        if (firstName) {
            NSDictionary *dict = [NSDictionary dictionaryWithObject:firstName ForKey:@"name"];
            [contactsArray addObject:dict];
        }
    
    }
    CFRelease(addressBook);
    CFRelease(addressBookData);
    

提交回复
热议问题