2011-03-23 5 views
2

iPhone 응용 프로그램 중 하나에서 내 주소록에 대한 참조를 원합니다. 아래 코드를 사용했습니다. 하지만 그 [사람 수] = 0 표시.iPhone 응용 프로그램에 ABAddressBookRef를 사용하는 방법은 무엇입니까?

나는 내 주소록 응용 프로그램에 3-4 개의 연락처를 가지고 있지만 [사람 수]는 0을 반환합니다.

더 이상입니까, 여기에 없습니까? ,

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef people; 
people = ABAddressBookCopyArrayOfAllPeople(HiByeGroup); 

if (people){ 
    CFArrayCreateMutableCopy(kCFAllocatorDefault,CFArrayGetCount(people),people); 
    NSInteger numberOfPersonsInAB=CFArrayGetCount(peopleMutable); 

    for (int i =0; i< numberOfPersonsInAB; i++) { 
     //your code 
     } 
CFRelease(people); 

업데이트 잼 그렌이 언급 한 바와 같이이 답변이 오래되어 ABAddressBookCreate()는 iOS6의에서 더 이상 사용되지 않습니다 -

ABAddressBookRef addressBook = ABAddressBookCreate(); 

    NSMutableArray *people = [[[(NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook) autorelease] mutableCopy]autorelease]; 
    [people sortUsingFunction:(int (*)(id,id,void*)) ABPersonComparePeopleByName context:(void*)ABPersonGetSortOrdering()]; 
    NSLog(@"count..%i",[people count]); 

    for(int i = 0 ; i < [people count]; i++){ 
     ABRecordRef person = [people objectAtIndex:i]; 
     //get phone no fill phone no into array 
     ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty); 
     if(multi!=NULL && ABMultiValueGetCount(multi)>0) { 
      NSLog(@"in value.."); 
     } 
     else { 
      NSLog(@"no value"); 
     } 

    } 

그 시도 당신에게

답변

2

감사합니다

코드입니다. 대신 ABAddressBookCreateWithOptions()을 사용해야합니다. GOOD LUCK

+0

여전히 작동하지 않습니다. – spaleja

+1

iOS 6에서는 ABAddressBookCreate()가 더 이상 사용되지 않습니다. ABAddressBookCreateWithOptions()를 사용하십시오. 더 많은 정보는 여기 : http://stackoverflow.com/questions/12083643/how-do-i-correctly-use-abaddressbookcreatewithoptions-method-in-ios-6/12510649#12510649 –

+0

그런데 CFRelease를 호출하지 않는 이유는 주소록? –

1

여기에 지정된 코드를 따라주세요. ABAddressBook과 상호 작용할 수있는 완벽한 예입니다.

관련 문제