2011-03-10 10 views
6

Me pregunto si hay una manera de obtener el grupo (s) al que pertenece un contacto en particular.¿Obtener grupo de contactos de la libreta de direcciones?

Digamos que tengo el conjunto de todos los contactos:

NSMutableArray *people = [[[(NSArray*) 
     ABAddressBookCopyArrayOfAllPeople(addressBook) autorelease] 
     mutableCopy] autorelease]; 

y luego iterar a través de ellos:

for (int personN = 0; personN < [people count]; personN++) { 
ABRecordRef person = [people objectAtIndex:personN]; 
NSString* firstName = (NSString*)ABRecordCopyValue(person, 
         kABPersonFirstNameProperty); 
//and so on... 
} 

¿Cómo puedo obtener el nombre (s) de grupo para la persona? En MacOS hay una clase ABPerson que tiene el método parentGroups que hace lo que necesito, pero no veo nada parecido en iOS.

Supongo que es posible obtener la matriz de todos los grupos, luego iterar a través de esa matriz de grupos y recuperar los registros de contacto para cada grupo, pero esperaba que hubiera una forma más directa de hacerlo.

P.S. Parece que no hay forma de hacerlo, sino iterar a través de grupos. Una advertencia para los que encontrarán esta pregunta más adelante: para obtener todos los contactos, debe iterar a través de grupos y obtener miembros de cada grupo (ABGroupCopyArrayOfAllMembers), luego iterar a través de todos los contactos (ABAddressBookCopyArrayOfAllPeople) porque no hay un grupo "nulo". También tenga en cuenta que ABAddressBookCopyArrayOfAllPeople también le proporcionará los contactos que ya recuperó con las llamadas ABGroupCopyArrayOfAllMembers, por lo tanto, asegúrese de verificar si hay duplicados.

+0

Creo que no hay manera directa :(puede iterar serie único grupo – Sergnsk

+0

@Sergnsk sí, parece que iteración a través de los grupos de matriz que es. – SVD

+1

Si has encontrado una solución a esta pregunta, es mejor que conteste usted mismo y acepte la respuesta. Esto ayudará mucho a los lectores entrantes. De lo contrario, comenzar una recompensa será una gran manera de mejorar esta pregunta. – marzapower

Respuesta

0

la salida http://ericasadun.com para ABRecordHelper

hay un método para devolver el nombre del grupo de un recordID. envoltorio muy útil.

+0

Parece una colección útil de envoltorios de libreta de direcciones, por lo tanto, aceptando la respuesta. – SVD

Cuestiones relacionadas