我想我需要使用ABMultiValueCopyArrayOfAllValues
从我的ABAddressBookRef
引用变量中获取所有电话号码。
(如果这不是正确的方法,请给我一个正确的方法;任何方式让我可以访问联系电话号码)
我现在要做的是获取用户联系人的电话号码(最好是他们的小区)并将其添加到阵列中。 如何抓取只数字并将其添加到数组中?
任何有关此建议的帮助,建议或建议都非常受欢迎,我在任何地方都找不到。
感谢。
答案 0 :(得分:1)
如果我是你,我会使用这种方法:
NSMutableArray *allPhoneNumbers = @[].mutableCopy;
NSArray *allContact = (__bridge NSArray*)ABAddressBookCopyArrayOfAllPeople(book);
for (id rec in allContacts){
ABMultiValueRef mvr = ABRecordCopyValue((__bridge ABRecordRef)rec, kABPersonPhoneProperty);
NSArray *currentNums = (__bridge NSArray*) ABMultiValueCopyArrayOfAllValues(mvr);
[allPhoneNumbers addObjectsFromArray: currentNums];
}
我没有对此进行测试,但它应该可行。如果您有任何问题,请告诉我。
如果您只想要一个联系人的号码(以上是每个联系人),请使用此代码。
ABMultiValueRef mvr = ABRecordCopyValue(yourRecordRef, kABPersonPhoneProperty);
NSArray *currentNums = (__bridge NSArray*) ABMultiValueCopyArrayOfAllValues(mvr);
[allPhoneNumbers addObjectsFromArray: currentNums];
答案 1 :(得分:0)
ABMultiValueRef phoneNumbers = ABRecordCopyValue(ref, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phoneNumbers); j++)
{
CFStringRef phoneNumberRefCF = ABMultiValueCopyValueAtIndex(phoneNumbers, j);
CFStringRef locLabelCF = ABMultiValueCopyLabelAtIndex(phoneNumbers, j);
NSString *phoneLabelCF =(NSString*) ABAddressBookCopyLocalizedLabel(locLabelCF);
NSString *phoneNumberCF = (NSString *)phoneNumberRefCF;
CFRelease(phoneNumberRefCF);
CFRelease(locLabelCF);
NSLog(@" - %@ (%@)", phoneNumberCF, phoneLabelCF);
}