码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 获取通讯录

时间:2014-10-17 12:04:49      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:style   color   io   os   ar   for   sp   div   on   

1.添加 AddressBook库

- (IBAction)add:(id)sender {

    ABAddressBookRequestAccessWithCompletion(ABAddressBookRef addressBookRef, ^(bool granted, CFErrorRef error) {

        if (granted) {

            dispatch_async(dispatch_get_main_queue(), ^{

              

NSArray  * array=[self getContactsFromAddressBook];

            });

        } else {

            // TODO: Show alert

        }

    });

}


-(NSMutableArray *)getContactsFromAddressBook

{

    CFErrorRef error = NULL;

    NSMutableArray * contacts = [[NSMutableArray alloc]init];

    

    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);

    

    if (addressBook) {

        NSArray *allContacts = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);

        NSMutableArray *mutableContacts = [NSMutableArray arrayWithCapacity:allContacts.count];

        

        NSUInteger i = 0;

        for (i = 0; i<[allContacts count]; i++)

        {

            //THContact 一个model对象,有name和phoneNum两个属性

            THContact *contact = [[THContact alloc] init];

            ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];

            contact.recordId = ABRecordGetRecordID(contactPerson);

            

            // Get first and last names

            NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);

            NSString *lastName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);

            NSString * midName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonMiddleNameProperty);

            

            // Set Contact properties

            contact.firstName = firstName;

            contact.lastName = lastName;

            contact.middleName = midName;

            

            // Get mobile number

            ABMultiValueRef phonesRef = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);

            contact.phone = [self getMobilePhoneProperty:phonesRef];

            if(phonesRef) {

                CFRelease(phonesRef);

            }

            

            if (contact.phone.count >0) {

                [mutableContacts addObject:contact];

            }

        }

        

        if(addressBook) {

            CFRelease(addressBook);

        }

        

        contacts = [NSMutableArray arrayWithArray:mutableContacts];

        return contacts;

    }

    else

    {

        NSLog(@"Error");

        

    }

    return nil;

}

- (NSMutableArray *)getMobilePhoneProperty:(ABMultiValueRef)phonesRef

{

    NSMutableArray * array = [NSMutableArray array];

    for (int k = 0; k<ABMultiValueGetCount(phonesRef); k++)

    {

        //获取电话Label

        //        NSString * personPhoneLabel = (__bridge NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phonesRef, k));

        //获取該Label下的电话值

        NSString * personPhone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phonesRef, k);

        if (personPhone) {

            [array addObject:personPhone];

        }

    }

    return array;

}



iOS 获取通讯录

标签:style   color   io   os   ar   for   sp   div   on   

原文地址:http://blog.csdn.net/mingios/article/details/40181947

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!