iPhone地址簿 - 始终从默认组中拉出

时间:2011-11-23 04:15:47

标签: iphone objective-c ios uibutton

我正在滚动我自己的PeoplePicker,使用以下代码获取所有联系人:

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

它在开发过程中运行良好,但现在我们处于测试阶段,并且用户抱怨说当他们在我的应用程序中选择联系人时,他们可以选择的列表是他们所有联系人中的一小部分。他们的电话。

我们认为它实际上只是展示了他们的一个群体。

过了一会儿,我意识到你可以在设置>中设置默认组。邮件,通讯录,日历>联系人>默认组

如果用户选择了特定的组,那么该组就会显示在我的应用中。

我认为这是因为我正在使用ABAddressBookCopyDefaultSource来获取所有联系人。

如何在不考虑默认来源的情况下抓取所有用户的联系人?

谢谢!

1 个答案:

答案 0 :(得分:3)

试试这个,

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
}