Вот фрагмент кода, который создает человека, добавляет 2 телефонных контакта, а затем показывает, как получить метку и значение для свойства телефона:
ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueIdentifier multivalueIdentifier;
ABMultiValueAddValueAndLabel(multi, @"(555) 555-1234",
kABPersonPhoneMobileLabel, &multivalueIdentifier);
ABMultiValueAddValueAndLabel(multi, @"(555) 555-2345",
kABPersonPhoneMainLabel, &multivalueIdentifier);
ABRecordRef aRecord = ABPersonCreate();
CFErrorRef anError = NULL;
ABRecordSetValue(aRecord, kABPersonPhoneProperty, multi, &anError);
CFRelease(multi);
multi = ABRecordCopyValue(aRecord, kABPersonPhoneProperty);
for (CFIndex i = 0; i < ABMultiValueGetCount(multi); i++)
{
CFStringRef phoneNumber, phoneNumberLabel;
phoneNumberLabel = ABMultiValueCopyLabelAtIndex(multi, i);
phoneNumber = ABMultiValueCopyValueAtIndex(multi, i);
NSLog(@"%@ %@", (NSString *) phoneNumberLabel, (NSString *) phoneNumber);
CFRelease(phoneNumberLabel);
CFRelease(phoneNumber);
}
CFRelease(aRecord);
CFRelease(multi);
В коде он перебирает все мульти-значения и извлекает метку и число по мере использования, используя ABMultiValueCopyLabelAtIndex
и ABMultiValueCopyValueAtIndex
соответственно.