【问题标题】:ABAddressBookGetGroupCount does not give proper countABAddressBookGetGroupCount 没有给出正确的计数
【发布时间】:2013-03-07 06:59:10
【问题描述】:

我需要返回特定组的所有联系人。所以一直在尝试做一些提取所有联系人的示例代码。首先需要找到电话簿中的所有组。当我打开电话簿时,我发现已经创建了 2 个群组,因为我在 Settings->Mail,Contacts,Calendars viz 中设置了 2 个帐户。 iCloud 和雅虎帐户。

以下是我为获取所有组名而编写的代码

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。谁能建议我在这里做错了什么?

【问题讨论】:

    标签: iphone ios contacts addressbook abaddressbook


    【解决方案1】:

    ABAddressBookGetAuthorizationStatus() 是否有可能返回 kABAuthorizationStatusRestricted 或 kABAuthorizationStatusDenied?根据您提供的代码 sn-p,返回值 kABAuthorizationStatusRestricted 或 kABAuthorizationStatusDenied 会使您进入 getContacts 方法,而无需适当的通讯录授权。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多