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
,