Domanda

So che possono esserci più valori per un'email, ma non sono sicuro di come sfogliarli.

Posso ottenere una persona correttamente.

ABRecordRef person = // getting a person;
NSString* emails = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty);

... quali sono le prospettive? Se provo a stampare la variabile email ottengo:

Emails: <NSCFType: 0x4018d40>
È stato utile?

Soluzione

È perché le e-mail non dovrebbero essere una stringa, ma un array. Le persone possono avere molte e-mail!

ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, <INDEX>);
NSLog( (NSString *) email);

Qui ci sono alcuni documenti su cose che puoi fare con MultiValueLists

Altri suggerimenti

Il tipo di questa voce è un ABMultiValue (in particolare, il tipo di questo campo è un kABMultiStringProperty ). Vedi " Uso di liste multivalue " per come leggere questi. Vedi Riferimento delle costanti dell'obiettivo-C della Rubrica per ciò che ciascuna proprietà restituisce.

Inoltre, ricorda che le funzioni AB sono soggette alla Crea regola . Sei responsabile del rilascio di oggetti ottenuti da una funzione con la parola "Copia" in esso.

In iOS 9 ABFramework è stato deprecato per il nuovo Contacts Framework :

Ti faccio vedere un esempio per registrare ogni indirizzo email di un contatto CNC:

CNContact * yourContact = //...

for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){
    NSLog(@"%@",[emailLabeledValue value]);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top