iPhone: Как вы получаете названия всех адресных книг на iPhone?

Некоторые пользователи имеют несколько адресных книг в своих контактах iPhone в результате различных подключений синхронизации, которые они установили, например, с Exchange-серверами.

Как можно получить все эти разные адресные книги? Мне было бы интересно узнать имена, под которыми сохраняются эти разные адресные книги, и получить доступ к их контактной информации.

Спасибо!

2 ответа

Решение
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sourcesArray = ABAddressBookCopyArrayOfAllSources(addressBook);
for (CFIndex i = 0; i < CFArrayGetCount(sourcesArray); i++) {
    ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(sourcesArray, i);
    ABRecordID sourceID = ABRecordGetRecordID(source);
    CFNumberRef sourceType = (CFNumberRef)ABRecordCopyValue(source, kABSourceTypeProperty);
    CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(source, kABSourceNameProperty);
    NSLog(@"source id=%d type=%d name=%@", sourceID, [(NSNumber *)sourceType intValue], sourceName);
    CFRelease(sourceType);
    if (sourceName != NULL) CFRelease(sourceName); // some source names are NULL
}
CFRelease(sourcesArray);
CFRelease(addressBook);

Обратите внимание, что в iOS 4 не все источники возвращают имя. Вы можете предоставить свои собственные имена в зависимости от типа.

использование ABAddressBookCopyArrayOfAllPeopleInSource(addressBook, source) чтобы получить записи в источнике.

Существует только одна централизованная база данных адресной книги на iOS, доступная с помощью набора функций C, см. ABAddressBook и руководство по программированию адресной книги iOS.

Возможно, вы имеете в виду группы в этой адресной книге. В этом случае вы можете получить список групп, используя ABAddressBookCopyArrayOfAllGroups функционировать, как описано в ссылке наABGroup,

Другие вопросы по тегам