с помощью iPhone 6 под управлением IOS 8.2IOS AddressBook связан счета отчеты не отображаются в отсортированной копии
я добавил учетную запись GMAIL через настройку ОС, а контакты (~ 350) для Gmail отображается в моем списке контактов ,
Я также добавил 3 новых контакта непосредственно через телефон.
Если я пытаюсь ими программным получить все контакты через Objective-C все они возвращаются
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBookRef);
Если я пытаюсь получить их с порядком сортировки [via this question], только 3 записей я добавил через телефон объявиться. Gmail не возвращаются.
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
ABRecordRef source = ABAddressBookCopyDefaultSource(addressBookRef);
NSArray *sortedContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBookRef, source, kABPersonSortByFirstName);
Редактировать: Не имеет значения, сортирую ли я по имени или фамилии, возвращаются те же 3 записи.
Я делаю что-то неправильное или мне нужно каким-то образом вызвать индекс на gmail Records?
Edit 2: _bridge к __bridge_transfer
любая разница в производительности для сортировки по сравнению с родной api? – MattoTodd
Быстрый тест показывает, что с ~ 3,300 контактов на iPhone 6+, работающем под управлением iOS 8.3, потребовалось 21 мс, используя встроенную сортировку и 34 мс вручную их сортировку. Таким образом, похоже, что собственный API немного быстрее, но не так заметно в практических приложениях. – Rob
это было быстро. благодаря!! – MattoTodd