Iphone 如何仅获取具有地址字段的联系人
我只想显示那些有地址字段的联系人。我正在使用此代码。。请帮忙Iphone 如何仅获取具有地址字段的联系人,iphone,objective-c,ios,ios5,Iphone,Objective C,Ios,Ios5,我只想显示那些有地址字段的联系人。我正在使用此代码。。请帮忙 - (ABAddressBookRef)getValidAddress{ ABAddressBookRef allPeople = ABAddressBookCreate(); ABAddressBookRef contactsWithAddress = ABAddressBookCreate(); CFArrayRef allContacts = ABAddressBookCopyArrayOfAllPeo
- (ABAddressBookRef)getValidAddress{
ABAddressBookRef allPeople = ABAddressBookCreate();
ABAddressBookRef contactsWithAddress = ABAddressBookCreate();
CFArrayRef allContacts = ABAddressBookCopyArrayOfAllPeople(allPeople);
CFIndex numberOfContacts = ABAddressBookGetPersonCount(allPeople);
CFErrorRef anError = NULL;
for(int i=0; i<numberOfContacts;i++){
ABRecordRef aPerson = CFArrayGetValueAtIndex(allContacts, i);
ABMultiValueRef AddressProperty = ABRecordCopyValue(aPerson, kABPersonAddressProperty);
if(ABMultiValueGetCount(AddressProperty)>0){
NSLog(@"this dude has address, he's on the list");
//ABAddressBookAddRecord(contactsWithEmail, aPerson, &anError);
}
else{
NSLog(@"this guy has no address, removing them from the addressBook");
ABAddressBookRemoveRecord(contactsWithAddress, aPerson, &anError);
}
}
return contactsWithAddress;
}
- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar
{
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
ABAddressBookRef test = [self getValidAddress];
[picker setAddressBook:test];
NSArray* emailProp = [NSArray arrayWithObjects:
[NSNumber numberWithInt:kABPersonPhoneProperty],
[NSNumber numberWithInt:kABPersonEmailProperty],
[NSNumber numberWithInt:kABPersonBirthdayProperty],
[NSNumber numberWithInt:kABPersonAddressProperty],
nil];;
picker.displayedProperties = emailProp;
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
//[parentController presentModalViewController:picker animated:YES];
[picker release];
}
-(ABAddressBookRef)getValidAddress{
ABAddressBookRef allPeople=ABAddressBookCreate();
ABAddressBookRef contactsWithAddress=ABAddressBookCreate();
CFArrayRef allContacts=abAddressBookCopyArrayFallPeople(所有人);
CFIndex numberOfContacts=ABAddressBookGetPersonCount(所有人);
CFErrorRef anError=NULL;
对于(int i=0;i0){
NSLog(@“这家伙有地址,他在名单上”);
//ABAddressBookAddRecord(联系邮件、联系人和错误);
}
否则{
NSLog(@“这家伙没有地址,正在从通讯簿中删除”);
ABAddressBookRemoveRecord(联系人地址、联系人和错误);
}
}
返回联系人地址;
}
-(无效)searchBarBookmarkButtonClicked:(UISearchBar*)搜索栏
{
ABPeoplePickerNavigationController*picker=[[ABPeoplePickerNavigationController alloc]init];
ABAddressBookRef测试=[self-getValidAddress];
[选择器设置地址簿:测试];
NSArray*emailProp=[NSArray阵列及其对象:
[NSNumber numberWithInt:KabbersonPhoneProperty],
[NSNumber numberWithInt:KabbersoneMailProperty],
[NSNumber numberWithInt:KabbersonBirthdayProperty],
[NSNumber numberWithInt:KabPersonalAddressProperty],
零];;
picker.displayedProperties=emailProp;
picker.peoplePickerDelegate=self;
[自我呈现ModalviewController:picker动画:是];
//[parentController presentModalViewController:picker动画:是];
[选择器释放];
}
现在它在picker中显示联系人,他们有地址,但现在我的输出是:
TEST1 44-541541-52 D-551,纽约,TEST2 54-965684-85 j.V
印度大街,TEST3 95-95684-956无,TEST3 20-95684-956无
现在我得到这个输出:
测试1测试2测试2测试2测试2
请帮忙。。。
它显示出重复性 恐怕你运气不好
ABPeoplePickerController
是一个非常有限的类
您必须滚动自己的people picker控制器,并使用通讯簿中的所有记录填充它,这些记录您以前已经迭代并过滤过。为我工作的代码已经存在。您可以检查地址是否存在,如果不存在,则可以跳过该联系人 为此,您必须在项目和.m文件中导入ABAddressbook框架 祝你好运 您正在前两行“创建”(即复制)两个通讯簿。您应该只维护自己的
ABRecordRef
s数组。