4

特定のグループのすべての連絡先を返す必要があります。そのため、すべての連絡先を抽出するサンプル コードを実行しようとしています。まず、電話帳ですべてのグループを検索する必要があります。電話帳を開くと、[設定]->[メール、連絡先、カレンダー] で 2 つのアカウントを設定したため、既に 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);
    }
}

今、私は0を取得しているのに対し、カウントを2として取得する必要があります。

4

1 に答える 1

1

ABAddressBookGetAuthorizationStatus() が kABAuthorizationStatusRestricted または kABAuthorizationStatusDenied を返す可能性はありますか? あなたが提供したコード スニペットに基づいて、kABAuthorizationStatusRestricted または kABAuthorizationStatusDenied の戻り値は、適切なアドレス帳認証なしで getContacts メソッドにドロップします。

于 2013-05-29T15:38:32.587 に答える