Адресная книга iPhone - всегда вытягивает из группы по умолчанию - PullRequest
2 голосов
/ 23 ноября 2011

Я запускаю свой собственный PeoplePicker, используя следующий код, чтобы получить все мои контакты:

ABAddressBookRef ab = ABAddressBookCreate();
ABRecordRef source = ABAddressBookCopyDefaultSource(ab);    
NSArray *allContacts = (NSArray *) ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(ab, source, ABPersonGetSortOrdering());

Во время разработки все работало нормально, но сейчас мы находимся в бета-версии, и пользователь пожаловался, что, когда он выбрал контакт в моем приложении, список, из которого ему дали выбор, представлял собой небольшое подмножество всех его контактов в. их телефон.

Мы связали это с тем фактом, что он на самом деле просто отображал одну из их групп.

Через некоторое время я понял, что вы можете установить группу по умолчанию в Настройки> Почта, Контакты, Календари> Контакты> Группа по умолчанию

Если для пользователя выбрана определенная группа, то в моем приложении отображается только эта группа.

Я думаю, это потому, что я использую ABAddressBookCopyDefaultSource, чтобы получить все контакты.

Как я могу получить все контакты пользователя без учета источника по умолчанию?

Спасибо!

1 Ответ

3 голосов
/ 23 ноября 2011

попробуйте это,

ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
for( int i=0;i< nPeople;i++)
{
        ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i);
        CFStringRef firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
        .....
        and so on
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...