Как сказать ABPeoplePickerNavigationController перечислять только контакты, которые имеют адрес электронной почты?
Я хочу, чтобы мои пользователи заполнили поле электронной почты, выбрав контактный адрес электронной почты из своих адресных книг. Я не хочу, чтобы они прокручивали все контакты, чьи электронные письма не заданы, поэтому я хочу отфильтровать те, у которых есть адреса электронной почты.
Это код, который я уже написал. Я могу выяснить, у кого есть адрес электронной почты, а у кого нет, но я не могу сказатьABPeoplePickerNavigationController
перечислить только правильные контакты. Достигнуть этого невозможно, я имею в виду, нужно ли мне реализовывать свой собственный класс средства выбора контактов с помощью табличного представления или что-то не так с этим фрагментом кода?
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];