【问题标题】:How to fetch name, email id and all phone numbers from addressbook and show in my ios app? [duplicate]如何从通讯录中获取姓名、电子邮件 ID 和所有电话号码并显示在我的 ios 应用程序中? [复制]
【发布时间】:2014-03-31 06:32:52
【问题描述】:

我正在开发一个应用程序,我想从通讯录中获取所有联系人并显示在我的应用程序中。我已经获得了所有数据,但问题是,这些数据不是按字母顺序升序排列的,电话号码也是,电子邮件 ID 应按名称顺序排列。我将所有数据放在不同的不同数组中。请给出一些建议以纠正此问题。

【问题讨论】:

  • 您是否成功从通讯录中获取联系人?
  • @HimanshuJoshi 是的,我已经获取了,但问题是我无法对来自不同数组的所有数据进行排序
  • 你试过我的回答了吗?

标签: ios addressbook


【解决方案1】:

首先在你的.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);

您可以像上面的代码一样获取所有 emailAdress。您先更改名字然后更改。

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

按字母顺序对该数组进行排序后

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

【讨论】:

  • 我觉得应该不错,但问题是在开始时你已经解释了电子邮件,但它只会给出有电子邮件的联系人。例如。我的通讯录中有 20 个联系人,我想获取全部 20 个,即使他们有电话号码和电子邮件。
  • 获取所有号码并检查emailid是否有条件
  • 但是使用它会给出包含 emil id 的结果,但我希望所有包含电话号码和电子邮件 id 的联系人都存在。
  • 如果联系电话没有EmailId,那么它不需要你'
  • 但用户想要所有联系人,无论是否包含电话号码和电子邮件 ID,他想显示所有联系人,并且用户可以更新他们的联系人详细信息运行时间
【解决方案2】:

如果你已经成功找到联系人并将它们存储在数组中,那么你可以使用localizedCaseInsensitiveCompare:按字母顺序排序

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

只要通过Apple Docs,你可以在那里找到一切。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2012-01-02
    • 2014-02-12
    • 2018-11-15
    • 1970-01-01
    相关资源
    最近更新 更多