2013-03-07 108 views
4

我需要返回特定組的所有聯繫人。所以一直試圖做一些抽取所有聯繫人的示例代碼。首先需要查找電話簿中的所有組。當我打開電話簿時,我發現已經創建了2個組,因爲我已經在設置 - >郵件,聯繫人,日曆中設置了2個帳戶,即iCloud和雅虎帳戶。ABAddressBookGetGroupCount沒有給出正確的計數

以下是我寫的代碼來獲取所有的組名

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,而我得到0。任何人都可以提出,如果我在這裏做錯什麼?

回答

1

ABAddressBookGetAuthorizationStatus()是否可能返回kABAuthorizationStatusRestricted或kABAuthorizationStatusDenied?根據您提供的代碼片段,kABAuthorizationStatusRestricted或kABAuthorizationStatusDenied的返回值會讓您無法通過getContacts方法獲得適當的地址簿授權。