iOS AddressBook 关联帐户记录未显示在排序的副本中
iOS AddressBook linked account Records do not show in sorted copy
使用 iPhone 6 运行 iOS 8.2
我通过 os 设置添加了一个 gmail 帐户,gmail 的联系人 (~350) 显示在我的联系人列表中。
我还直接通过 phone 添加了 3 个新联系人。
如果我尝试通过 objective-c 以编程方式检索所有联系人,他们都会回来
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBookRef);
如果我尝试按排序顺序 [via this question] 获取它们,则只会显示我通过 phone 添加的 3 条记录。 gmail 的没有 return.
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联系人无疑是不同的来源。您的第二个代码示例有效地说 "I don't care about the gmail source, just get the contacts from the default source".
在 ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering
中,如果您为源传递 NULL
,它会获取所有联系人。不过,我从未找到有关此行为的文档,所以我总是通过 ABAddressBookCopyArrayOfAllPeople
检索所有联系人,然后自己对它们进行排序。
使用 iPhone 6 运行 iOS 8.2
我通过 os 设置添加了一个 gmail 帐户,gmail 的联系人 (~350) 显示在我的联系人列表中。
我还直接通过 phone 添加了 3 个新联系人。
如果我尝试通过 objective-c 以编程方式检索所有联系人,他们都会回来
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBookRef);
如果我尝试按排序顺序 [via this question] 获取它们,则只会显示我通过 phone 添加的 3 条记录。 gmail 的没有 return.
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联系人无疑是不同的来源。您的第二个代码示例有效地说 "I don't care about the gmail source, just get the contacts from the default source".
在 ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering
中,如果您为源传递 NULL
,它会获取所有联系人。不过,我从未找到有关此行为的文档,所以我总是通过 ABAddressBookCopyArrayOfAllPeople
检索所有联系人,然后自己对它们进行排序。