iOS 地址簿链接帐户记录不会显示在排序副本中



使用运行iOS 8.2的iPhone 6

我通过操作系统设置添加了一个 gmail 帐户,gmail 的联系人 (~350) 会显示在我的联系人列表中。

我还直接通过电话添加了3个新联系人。

如果我尝试通过objective-c以编程方式检索所有联系人,它们都会返回

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBookRef);

如果我尝试通过 [通过此问题] 按排序顺序获取它们,则只会显示我通过电话添加的 3 条记录。 Gmail的不返回。

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
ABRecordRef source = ABAddressBookCopyDefaultSource(addressBookRef);
NSArray *sortedContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBookRef, source, kABPersonSortByFirstName);

编辑:无论我按名字还是姓氏排序都没有关系,相同的 3 条记录都会返回。

我是否做了不正确的事情,或者我需要以某种方式触发 gmail 记录上的索引?

编辑2:_bridge到__bridge_transfer

您的三个iOS联系人和Gmail联系人无疑是不同的来源。您的第二个代码示例有效地说"我不关心 gmail 源,只需从默认源获取联系人"。

ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering中,如果传递源的NULL,它将获取所有联系人。但是,我从未找到过此行为的文档,因此我总是通过ABAddressBookCopyArrayOfAllPeople检索所有联系人,然后自己对其进行排序。

最新更新