1

我正在从通讯录中获取电话号码。我是这样做的:

ABMultiValueRef arrTelefonos = ABRecordCopyValue(contacto,kABPersonPhoneProperty);
for(int i=0;i<ABMultiValueGetCount(arrTelefonos);i++) {
   CFStringRef labelTelefono = ABMultiValueCopyLabelAtIndex(arrTelefonos,i);
   CFStringRef numeroTelefono = ABMultiValueCopyValueAtIndex(arrTelefonos,i);
   CFStringRef labelTelefonoLoc = ABAddressBookCopyLocalizedLabel(labelTelefono);
   /* Do some stuff */
}

一切都很好,除了在一种情况下:如果有一个带有特殊字符标签的电话的联系人(在我的情况下,标签是:带有“é”的“Teléfono”我在做的时候得到一个“无效的 CFStringRef”

CFStringRef labelTelefono = ABMultiValueCopyLabelAtIndex(arrTelefonos,i);

由于 CFStringRef 不允许特殊字符,是否存在问题?如果这是问题,有人知道解决方案吗?

先感谢您

4

1 回答 1

-1
NSMutableArray *phoneNumbers = [[NSMutableArray alloc] init];

        ABMultiValueRef multiPhones = ABRecordCopyValue(person, kABPersonPhoneProperty);
        for(CFIndex i=0;i<ABMultiValueGetCount(multiPhones);i++) {

            CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, i);
            NSString *phoneNumber = (__bridge NSString *) phoneNumberRef;
            [phoneNumbers addObject:phoneNumber];

            //NSLog(@"All numbers %@", phoneNumbers);

        }
于 2014-06-09T13:58:08.960 回答