2011-03-18 10 views
4

전화 번호와 연락처 만있는 모든 ABContacts의 목록을보고 싶습니다. 표시하고 싶지 않은 이메일 만 가진 연락처.iPhone 주소록 : 전화 번호가있는 연락처 목록을 얻는 방법?

Android에 HAS_PHNONE_NUMBER라는 입력란이 있지만 사용자가 쿼리 할 수 ​​있지만 iPhone과 같은 항목이 표시되지 않습니다.

예를 들어

:

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); 
//How do I filter people into an array of contacts that all have a phone number? 

답변

8

CFIndex numberOfPeople = CFArrayGetCount(_allPeople); 
for (int i=0;i < numberOfPeople;++i) { 
    ABRecordRef ref = CFArrayGetValueAtIndex(_allPeople, i); 
    ABMultiValueRef phones =(NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty); 
    int phoneNumbersCount = ABMultiValueGetCount(phones); 
    if (phoneNumbersCount>0) 
    { 
     // save this contact, it has phone number 
    } 
} 
2

이 쉬운 방법이 없다거나, 당신이 당신의 배열을 구문 분석 할 필요가 아이폰 OS에서이 같은 도움을 당신이 구문 분석하는 사람들은 전화 번호 또는 휴대폰 번호의 목록을하지 않은 경우 비어 있으면 최종 배열에 추가됩니다. 당신이 코드를 사용할 수 있습니다

+0

감사 니펫을. NSPredicate 사용은 어떻습니까? 뭔가 [NSPredicate predicateWithFormat : @ "phonenumbers contains [cd] % @", number]; 작업? – mymmaster

+0

ABAddressBook 개체는 NSEntityDescription 개체가 아니므로 요청을 수행 할 수 있다고 생각하지 않습니다. –

관련 문제