¿Cómo decirle a ABPeoplePickerNavigationController que liste solo los contactos que tienen una dirección de correo electrónico?

Quiero que mis usuarios rellenen un campo de correo electrónico seleccionando el correo electrónico de un contacto de sus libretas de direcciones. No quiero que se desplacen a todos los contactos cuyos correos electrónicos no están configurados, por lo que quiero filtrar los que tienen direcciones 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 alABPeoplePickerNavigationController para listar 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 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];

Respuestas a la pregunta(2)

Su respuesta a la pregunta