我希望我的用戶通過從地址簿中選擇聯繫人的電子郵件來填寫電子郵件字段。我不希望他們滾動所有未設置電子郵件的聯繫人,所以我想過濾那些有電子郵件地址的聯繫人。如何告訴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];
好的,謝謝你的建議! – aslisabanci