如何获取地址簿中所有联系人标签的所有电话号码?

iOS*_*Dev 1 iphone objective-c abaddressbook ios addressbookui

对于存储在iPhone地址簿中的联系人,我想获取所有带有差异标签的电话号码,如"iPhone","家庭电话","手机号码","其他号码"等.

我怎么得到它?

请帮忙.

提前致谢.

我正在尝试:这是崩溃

ABAddressBookRef ab=ABAddressBookCreate();

    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(ab);
    NSMutableArray *allNumbers = [[NSMutableArray alloc] initWithCapacity:CFArrayGetCount(people)];

    for (CFIndex i = 0; i < CFArrayGetCount(people); i++) {
        ABRecordRef person = CFArrayGetValueAtIndex(people, i);
        ABMultiValueRef numbers = ABRecordCopyValue(person, kABPersonPhoneProperty);

        for (CFIndex j=0; j < ABMultiValueGetCount(numbers); j++) {


            CFStringRef locLabel = ABMultiValueCopyLabelAtIndex(numbers, i);
            NSString *phoneLabel =(NSString*) ABAddressBookCopyLocalizedLabel(locLabel);

            CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(numbers, j);
            CFStringRef locLabel1 = ABMultiValueCopyLabelAtIndex(numbers, j);
            NSString *phoneLabel1 =(NSString*) ABAddressBookCopyLocalizedLabel(locLabel);

             NSLog(@" ####### phone no -> %@ , phone label -> %@  #######)", locLabel1, phoneLabel1);
            //CFRelease(phones);
            NSString *phoneNumber = (NSString *)phoneNumberRef;
            CFRelease(phoneNumberRef);
            CFRelease(locLabel);
            NSLog(@"phone no -> %@ , phone label -> %@)", phoneNumber, phoneLabel);
            [phoneNumber release];
        }
        CFRelease(numbers);
    }

    CFRelease(people);
Run Code Online (Sandbox Code Playgroud)

MCK*_*pur 15

尝试:

ABMultiValueRef *phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);

for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
   CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
   CFStringRef locLabel = ABMultiValueCopyLabelAtIndex(phones, j);
   NSString *phoneLabel =(NSString*) ABAddressBookCopyLocalizedLabel(locLabel);

   NSString *phoneNumber = (NSString *)phoneNumberRef;
   CFRelease(phoneNumberRef);
   CFRelease(locLabel);
   NSLog(@"  - %@ (%@)", phoneNumber, phoneLabel);

   [phoneNumber release];
}
Run Code Online (Sandbox Code Playgroud)