Come ottenere le e-mail di un contatto della rubrica iPhone come NSStrings?
-
10-07-2019 - |
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>
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]);
}