某些用戶在他們的iPhone聯繫人中有多個地址簿,這是由於他們使用的聯繫人不同。 Exchange服務器。iPhone:您如何獲得iPhone上所有地址簿的名稱?
如何獲取所有這些不同的地址簿?我希望獲取保存這些不同地址簿的姓名以及訪問他們的聯繫信息。
謝謝!
某些用戶在他們的iPhone聯繫人中有多個地址簿,這是由於他們使用的聯繫人不同。 Exchange服務器。iPhone:您如何獲得iPhone上所有地址簿的名稱?
如何獲取所有這些不同的地址簿?我希望獲取保存這些不同地址簿的姓名以及訪問他們的聯繫信息。
謝謝!
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 address book programming guide。
您可能指的是該地址簿中的組。在這種情況下,您可以按reference on ABGroup
中所述使用ABAddressBookCopyArrayOfAllGroups
函數獲取組列表。
Apple文檔http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html:下面的清單「下面的代碼清單顯示了排序整個地址簿數據庫:「使用`ABAddressBookCopyArrayOfAllPeople`來訪問整個數據庫。 `ABAddressBookCopyArrayOfAllPeopleInSource`方法是一個更受限制的版本,請參閱http://developer.apple.com/library/ios/#documentation/AddressBook/Reference/ABPersonRef_iPhoneOS/Reference/reference.html – user8472 2013-01-17 08:37:20
上的`ABPerson`文檔。在CFRelease(sourceType)上 - 用ARC。 – Borzh 2014-10-04 15:51:12