2011-03-28 44 views

回答

1
+ (NSArray *) findContactsContainingName: (NSString *) fname 
{ 
    // Load the contacts 
    ABAddressBookRef addressBook = CFAutorelease(ABAddressBookCreate()); 
    NSArray *thePeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); 
    NSMutableArray *contacts = [NSMutableArray arrayWithCapacity:thePeople.count]; 
    for (id person in thePeople) 
     [array addObject:[ABContact contactWithRecord:(ABRecordRef)person]]; 
    [thePeople release]; 

    // search the contacts for fname 
    NSPredicate *pred; 
    pred = [NSPredicate predicateWithFormat:@"firstname contains[cd] %@ OR lastname contains[cd] %@ OR nickname contains[cd] %@ OR middlename contains[cd] %@", fname, fname, fname, fname]; 
    return [contacts filteredArrayUsingPredicate:pred]; 
} 
+0

ABAddressBookRef顯示在Xcode 7.3的錯誤..什麼要導入? – 2016-05-05 11:12:36

3
ABAddressBookRef addressbook = ABAddressBookCreateWithOptions(Nil, Nil); 
NSArray *people = (__bridge NSArray*)ABAddressBookCopyArrayOfAllPeople(addressbook); 
NSMutableArray *namearray=[[NSMutableArray alloc] init]; 
for(id person in people){ 
     NSString *firstNameString = (__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(person),kABPersonFirstNameProperty); 
    NSLog(@"%@",firstNameString); 
     [namearray addObject:firstNameString]; 
    } 
    NSLog(@"%@",namearray); 
NSString *yourString = name you want to add; 
BOOL identicalStringFound = NO; 
for (NSString *someString in namearray) { 
    if ([someString isEqual:yourString]) { 
     identicalStringFound = YES; 
     break; 
    } 
} 
if(identicalStringFound) 
{ 
    //code you want to perform 
} 
else 
{ 
    //code you want to perform 
} 
相關問題