Я сталкиваюсь с (странной) проблемой: я хотел бы узнать количество телефонных номеров контакта, но по какой-то причине я не могу.
Я использовал
ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *contacts = (NSArray*) ABAddressBookCopyArrayOfAllPeople(addressBook);
CFRelease(addressBook);
, чтобы получить массив всех контактов.Тогда я хотел бы использовать
ABMultiValueRef ref = ABRecordCopyValue([contacts objectAtIndex:i], kABPersonPhoneProperty);
NSLog(@"%d",ref==NULL);
, но ABRecordCopyValue
всегда возвращает nil
...
Обратите внимание, что я могу получить другую информацию о контакте: например, извлекая имяотлично работает, используя
CFStringRef name = ABRecordCopyCompositeName([contacts objectAtIndex:i]);
Может кто-нибудь объяснить мне, что я делаю неправильно?Я использую Snow Leopard с Xcode 4.2 и разрабатываю для iOS 4.0 ...
РЕДАКТИРОВАТЬ: я нашел решение: вместо использования
ABRecordCopyValue([contacts objectAtIndex:i], kABPersonPhoneProperty);
я использовал
ABRecordID idRec = ABRecordGetRecordID([contacts objectAtIndex:i]);
ABMultiValueRef ref = ABRecordCopyValue(ABAddressBookGetPersonWithRecordID(addressBook, idRec), kABPersonPhoneProperty);
Однако я должен был сохранить ссылку на addressBook
(не выпускать ее), поэтому решение, предложенное EricS, кажется лучше.