Desidero che i miei utenti riempiano un campo di posta elettronica selezionando l'e-mail di un contatto dalla loro rubrica. Non voglio che scorrano tutti i contatti le cui e-mail non sono impostate, quindi voglio filtrare quelle che hanno indirizzi e-mail.Come dire a ABPeoplePickerNavigationController di elencare solo i contatti che hanno un indirizzo email?
Questo è il codice che ho scritto finora. Posso capire chi ha un indirizzo email e chi no, ma non potrei dire allo ABPeoplePickerNavigationController
di elencare solo i contatti giusti. È impossibile ottenere ciò, voglio dire devo implementare la mia classe di selezione dei contatti utilizzando una vista tabella o c'è qualcosa di sbagliato in questo pezzo di codice?
ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *peopleList = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSLog(@"%ld people exist in the addressBook", ABAddressBookGetPersonCount(addressBook));
for (id peopleRecord in peopleList) {
ABMultiValueRef mv = ABRecordCopyValue((ABRecordRef)peopleRecord, kABPersonEmailProperty);
CFIndex numberOfAddresses = ABMultiValueGetCount(mv);
if(numberOfAddresses == 0) {
CFErrorRef err;
ABAddressBookRemoveRecord(addressBook, (ABRecordRef)peopleRecord, &err);
}
}
[peopleList release];
NSLog(@"%ld people have an email", ABAddressBookGetPersonCount(addressBook));
ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init];
NSNumber* emailProp = [NSNumber numberWithInt:kABPersonEmailProperty];
[peoplePicker setAddressBook:addressBook];
peoplePicker.displayedProperties = [NSArray arrayWithObject:emailProp];
[peoplePicker setPeoplePickerDelegate:self];
[self presentModalViewController:peoplePicker animated:YES];
OK, grazie per i suggerimenti! – aslisabanci