如何从地址簿获取姓名,电子邮件ID和所有电话号码,并显示在我的iOS应用程序?

我正在开发一个应用程序,其中我想从地址簿中获取所有的联系人,并显示在我的应用程序。我已经得到所有的数据,但问题是,这个数据是不是按字母顺序升序,还有电话号码,电子邮件ID应按名称顺序排列。我把所有的数据都放在不同的数组中,请给出一些正确的解决办法。

首先在.m文件中导入<AddressBook/AddressBook.h>

 ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); NSMutableArray *allEmails = [[NSMutableArray alloc] initWithCapacity:CFArrayGetCount(people)]; for (CFIndex i = 0; i < CFArrayGetCount(people); i++) { ABRecordRef person = CFArrayGetValueAtIndex(people, i); ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); for (CFIndex j=0; j < ABMultiValueGetCount(emails); j++) { NSString* email = (__bridge NSString*)ABMultiValueCopyValueAtIndex(emails, j); [allEmails addObject:email]; } CFRelease(emails); } NSLog(@"All Detils:%@",allEmails); CFRelease(addressBook); CFRelease(people); 

你可以像上面的代码一样获得所有的email地址。你只需要改名就可以了。

 ABMultiValueRef Name = ABRecordCopyValue(person, kABPersonFirstNameProperty); 

联系电话:

 ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty); 

只有你改变你想要的人物。

 // Property keys AB_EXTERN const ABPropertyID kABPersonFirstNameProperty; // First name - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonLastNameProperty; // Last name - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonMiddleNameProperty; // Middle name - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonPrefixProperty; // Prefix ("Sir" "Duke" "General") - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonSuffixProperty; // Suffix ("Jr." "Sr." "III") - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonNicknameProperty; // Nickname - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonFirstNamePhoneticProperty; // First name Phonetic - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonLastNamePhoneticProperty; // Last name Phonetic - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonMiddleNamePhoneticProperty; // Middle name Phonetic - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonOrganizationProperty; // Company name - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonJobTitleProperty; // Job Title - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonDepartmentProperty; // Department name - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonEmailProperty; // Email(s) - kABMultiStringPropertyType AB_EXTERN const ABPropertyID kABPersonBirthdayProperty; // Birthday associated with this person - kABDateTimePropertyType AB_EXTERN const ABPropertyID kABPersonNoteProperty; // Note - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonCreationDateProperty; // Creation Date (when first saved) AB_EXTERN const ABPropertyID kABPersonModificationDateProperty; // Last saved date 

按字母顺序sorting该数组后

 NSArray *EmailArray = [allEmails sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

如果您已经成功find联系人并将其存储在数组中,则可以使用localizedCaseInsensitiveCompare:按字母顺序对其进行sortinglocalizedCaseInsensitiveCompare:

 NSArray *sortedArray = [YOUR_ARRAY sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

只要通过苹果文件 ,你可以find所有的东西。