ABAddressBookGetGroupCount no da el recuento adecuado

Necesito devolver todos los contactos de grupos particulares. Así que he estado tratando de hacer un código de muestra que extraiga todos los contactos. Para empezar, necesitaba encontrar todos los grupos en la agenda. Cuando abrí el directory telefónico, observé que ya había 2 grupos creados porque había configurado 2 counts en Configuración-> Correo, Contactos, Calendarios a saber . Cuenta iCloud y Yahoo.

El siguiente es el código que he escrito para get todos los nombres de los grupos.

 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); } } 

Ahora debería haber obtenido el recuento 2 mientras que estoy recibiendo 0. ¿Alguien puede sugerir si estoy haciendo algo mal aquí?

¿Es posible que ABAddressBookGetAuthorizationStatus () devuelva kABAuthorizationStatusRestricted o kABAuthorizationStatusDenied? Según el fragment de código que proporcionó, un valor de retorno de kABAuthorizationStatusRestricted o kABAuthorizationStatusDenied lo arrojaría al método getContacts sin tener la autorización adecuada de la libreta de direcciones.