2013-03-07 2 views
4

특정 그룹의 모든 연락처를 반환해야합니다. 그래서 모든 연락처를 추출하는 몇 가지 샘플 코드를 수행하려고했습니다. 전화 번호부에있는 모든 그룹을 찾는 데 필요합니다. 내가 전화 번호부를 열었을 때 나는 두 개의 계정을 설정했기 때문에 이미 그룹이 두 개 있다는 것을 알았습니다 설정 -> 메일, 연락처, 캘린더. iCloud 및 Yahoo 계정. ABAddressBookGetGroupCount가 적절한 수를 제공하지 않습니다.

다음

내가 작성한 코드는 내가 여기에 뭔가 잘못을하고있는 중이 야 경우 누군가가 제안 할 수 있습니다 0을 얻고있는 반면

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 
     ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) 
               { 
                // First time access has been granted, add the contact 
                // NSLog(@" given access..asked first time"); 
                [self getContacts:addressBookRef]; 
               }); 
    } 
    else 
     [self getContacts:addressBookRef]; 
} 

-(void) getContacts:(ABAddressBookRef) addressBookRef 
{ 
    NSString* groupName; 
    CFArrayRef groups = ABAddressBookCopyArrayOfAllGroups(addressBookRef); 
    CFIndex count = ABAddressBookGetGroupCount(addressBookRef); 
    for (int i=0; i<count;i++) { 
     ABRecordRef record = CFArrayGetValueAtIndex(groups, i); 
     groupName = (NSString *)ABRecordCopyCompositeName(record); 
     NSLog(@"Group %d : %@",i+1,groupName); 
    } 
} 

가 지금은 2로 카운트를 가지고 있어야 모든 그룹 이름을 얻는 것입니다 ?

답변

1

ABAddressBookGetAuthorizationStatus()가 kABAuthorizationStatusRestricted 또는 kABAuthorizationStatusDenied를 반환 할 가능성이 있습니까? 제공 한 코드 스니 j을 기]으로 kABAuthorizationStatusRestricted 또는 kABAuthorizationStatusDenied의 리턴 값은 적절한 주소록 권한이 없어도 getContacts 메소드로 사용자를 h 제합니다.

관련 문제