首页 > 代码库 > IOS 通讯录的模糊查询
IOS 通讯录的模糊查询
1、首先拿到通讯录
-(void)ReadAllPeoples
{
[contactsremoveAllObjects];
ABAddressBookRef addressBook =ABAddressBookCreateWithOptions(nil,nil);
dispatch_semaphore_t sema =dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted,CFErrorRef error)
{
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema,DISPATCH_TIME_FOREVER);
CFArrayRef results =ABAddressBookCopyArrayOfAllPeople(addressBook);
for(int i =0; i < CFArrayGetCount(results); i++)
{
ABRecordRef person = CFArrayGetValueAtIndex(results, i);
NSString *lastname = (__bridgeNSString*)ABRecordCopyValue(person,kABPersonLastNameProperty);
NSLog(@"lastname:%@",lastname);
ABMultiValueRef phone =ABRecordCopyValue(person,kABPersonPhoneProperty);
//读取联系人信息
for (int k =0; k<ABMultiValueGetCount(phone); k++)
{
NSString * personPhone = (__bridgeNSString*)ABMultiValueCopyValueAtIndex(phone, k);
if (lastname == nil) {
lastname =@"";
}
if (person == nil) {
continue;
}
//此句为存储结构,contacts为NSMutableArray*
[contactsaddObject:@[lastname,personPhone]];
}
}
CFRelease(results);
CFRelease(addressBook);
[self.tableViewreloadData];
}
2、对姓名(lastname)和手机号(personPhone)的模糊查询NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self[0] contains [cd] %@||self[1] contains [cd] %@",用户输入的string,用户输入string];
filterData = [[NSArrayalloc] initWithArray:[contactsfilteredArrayUsingPredicate:predicate]];
filterData就是查询到的结果
IOS 通讯录的模糊查询