2011-11-23 118 views
2

我我自己的滾動PeoplePicker,使用下面的代碼讓我的所有聯繫人拉:iPhone地址簿始終從默認組

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

它的發展過程中工作得很好,但現在我們已經處於測試階段,一位用戶抱怨說,當他們在我的應用程序中選擇聯繫人時,他們可以選擇的列表是他們手機中所有聯繫人的一小部分。

我們將它固定在實際上只是顯示其中一個組的事實上。

過了一會兒,我意識到你可以設置默認的組中設置>郵件,通訊錄,日曆>聯繫人>默認組

如果用戶有一個特定的組中,然後就在我的應用程序,組顯示。

我認爲這是因爲我使用ABAddressBookCopyDefaultSource來獲取所有聯繫人。

如何獲取所有用戶的聯繫人而不考慮默認源?

謝謝!

回答

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 
}