Искам моите потребители да попълнят имейл поле, като изберат имейл на контакт от своите адресни книги. Не искам да превъртат всички контакти, чиито имейли не са зададени, затова искам да филтрирам тези, които имат имейл адреси.
Това е кодът, който съм написал досега. Мога да разбера кой има имейл адрес и кой не, но не можах да кажа на 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];