2012-05-08 7 views
6

¿Cómo puedo obtener el nombre de una fuente ABAddressBook para visualizarlo? (Sé que el enumeraciones kABSourceTypeLocal, kABSourceTypeExchange, ...)ABAddressBook ABSourceName

no me refiero a la fuente nombre-tipo-que se obtiene con ABRecordCopyValue (fuente, ABSourceNameProperty), pero el nombre real que se muestra en Apple contactos de la aplicación como una sección de la tabla, por ejemplo: "Google Exchange" o "iCloud"

+0

Mismo problema de mi parte. ¿Has podido recuperar el nombre? –

+0

¿Algún éxito? El mismo problema aquí también. –

Respuesta

2

Si compruebas el ABSource Reference, se puede ver que tienen una propiedad llamada kABSourceNameProperty que contiene "el nombre de la fuente" . Así es como obtendría todos los nombres de fuente:

NSMutableArray *sourceNames = [[NSMutableArray alloc] init]; 
ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef sourcesArray = ABAddressBookCopyArrayOfAllSources(addressBook); 

for (CFIndex i = 0; i < CFArrayGetCount(sourcesArray); i++) { 
    ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(sourcesArray, i); 
    CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(ABRecordGetRecordID(source, kABSourceNameProperty); 

    if(sourceName){ 
     [sourceNames addObject: (__bridge_transfer NSString *)sourceName]; 
    } 
} 

CFRelease(sourcesArray); 
CFRelease(addressBook); 

Hope this helps!

+0

Esto no da los mismos nombres de fuente que la interfaz de usuario de contactos de Apple. Para mí, Apple muestra "Exchange", "Facebook" e "iCloud". Donde como la respuesta anterior da "Contactos" (CNContainerTypeExchange), "Tarjeta" (CNContainerTypeCardDAV) y "" (CNContainerTypeCardDAV) –

+0

@MattToohey - Esta respuesta se publicó hace más de tres años. No estoy actualizado con los últimos cambios de Apple en la API de la libreta de direcciones, por lo que es muy probable que esto se rompa/tenga resultados inesperados si lo ejecuta ahora. – pasawaya