Quiero que mis usuarios completen un campo de correo electrónico seleccionando el correo electrónico de un contacto de sus libretas de direcciones. No quiero que desplacen todos los contactos cuyos correos electrónicos no están configurados, por lo que quiero filtrar los que tienen direcciones de correo electrónico.¿Cómo decirle a ABPeoplePickerNavigationController que haga una lista solo de los contactos que tienen una dirección de correo electrónico?
Este es el código que he escrito hasta ahora. Puedo averiguar quién tiene una dirección de correo electrónico y quién no, pero no pude decirle al ABPeoplePickerNavigationController
que enumere solo los contactos correctos. ¿Es imposible lograr esto? Quiero decir, ¿tengo que implementar mi propia clase de selector de contactos utilizando una vista de tabla o hay algún problema con este fragmento de código?
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, gracias por las sugerencias! – aslisabanci