Ios 获取姓名和号码联系人列表通讯簿

Ios 获取姓名和号码联系人列表通讯簿,ios,objective-c,addressbook,abaddressbook,Ios,Objective C,Addressbook,Abaddressbook,我正试图在通讯簿中记录联系人的姓名和电话号码。 我成功地记录了名称,但没有成功地解决数字问题 这是我的密码: ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL); if (addressBook != NULL) { ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {

我正试图在通讯簿中记录联系人的姓名和电话号码。 我成功地记录了名称,但没有成功地解决数字问题

这是我的密码:

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
if (addressBook != NULL) {
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
        if (granted) {
            CFArrayRef allNames = ABAddressBookCopyArrayOfAllPeople(addressBook);

            if (allNames != NULL) {
                NSMutableArray *names = [NSMutableArray array];
                for (int i = 0; i < CFArrayGetCount(allNames); i++) {
                    ABRecordRef group = CFArrayGetValueAtIndex(allNames, i);
                    CFStringRef name = ABRecordCopyCompositeName(group);
                    [names addObject:(__bridge NSString *)name];
                    CFRelease(name);
                }


                NSLog(@"names = %@", names);
                CFRelease(allNames);
            }
        }
        CFRelease(addressBook);
    });
}
ABAddressBookRef addressBook=ABAddressBookCreateWithOptions(NULL,NULL);
如果(地址簿!=NULL){
ABAddressBookRequestAccessWithCompletion(addressBook,^(已授予bool,CFErrorRef错误){
如果(授予){
CFArrayRef allNames=abAddressBookCopyArrayFallPeople(addressBook);
如果(所有名称!=NULL){
NSMutableArray*名称=[NSMutableArray];
对于(int i=0;i

也许我必须创建一个字典?我不知道怎么解决它

您需要使用
ABRecordCopyValue(group,kabbersonphoneproperty)
返回
ABMultiValueRef
。有关更多信息,请参阅。

电话号码是一个多值参考:

ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
if (phones != NULL) {
    for (NSInteger index = 0; index < ABMultiValueGetCount(phones); index++) {
        NSString *phone = CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, index));
        NSString *label = CFBridgingRelease(ABMultiValueCopyLabelAtIndex(phones, index));  // either kABHomeLabel or kABPersonPhoneMainLabel or ...
        // do something with `phone` and `label`
    }
    CFRelease(phones);
}
ABMultiValueRef phones=ABRecordCopyValue(person,kabpersonphone属性);
如果(电话!=NULL){
对于(NSInteger index=0;index