`

ios获得通讯录中联系人的所有属性

阅读更多
ABAddressBookRef addressBook = ABAddressBookCreate();

    CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);

    for(int i = 0; i < CFArrayGetCount(results); i++)
    {
        ABRecordRef person = CFArrayGetValueAtIndex(results, i);
        //读取firstname
        NSString *personName = (NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
        if(personName != nil)
            textView.text = [textView.text stringByAppendingFormat:@"\n姓名:%@\n",personName];
        //读取lastname
        NSString *lastname = (NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
        if(lastname != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastname];
        //读取middlename
        NSString *middlename = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty);
        if(middlename != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlename];
        //读取prefix前缀
        NSString *prefix = (NSString*)ABRecordCopyValue(person, kABPersonPrefixProperty);
        if(prefix != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",prefix];
        //读取suffix后缀
        NSString *suffix = (NSString*)ABRecordCopyValue(person, kABPersonSuffixProperty);
        if(suffix != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",suffix];
        //读取nickname呢称
        NSString *nickname = (NSString*)ABRecordCopyValue(person, kABPersonNicknameProperty);
        if(nickname != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",nickname];
        //读取firstname拼音音标
        NSString *firstnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty);
        if(firstnamePhonetic != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",firstnamePhonetic];
        //读取lastname拼音音标
        NSString *lastnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty);
        if(lastnamePhonetic != nil)

 

            textView.text = [textView.text stringByAppendingFormat:@"%@\n",lastnamePhonetic];
        //读取middlename拼音音标
        NSString *middlenamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty);
        if(middlenamePhonetic != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",middlenamePhonetic];
        //读取organization公司
        NSString *organization = (NSString*)ABRecordCopyValue(person, kABPersonOrganizationProperty);
        if(organization != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",organization];
        //读取jobtitle工作
        NSString *jobtitle = (NSString*)ABRecordCopyValue(person, kABPersonJobTitleProperty);
        if(jobtitle != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",jobtitle];
        //读取department部门
        NSString *department = (NSString*)ABRecordCopyValue(person, kABPersonDepartmentProperty);
        if(department != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",department];
        //读取birthday生日
        NSDate *birthday = (NSDate*)ABRecordCopyValue(person, kABPersonBirthdayProperty);
        if(birthday != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",birthday];
        //读取note备忘录
        NSString *note = (NSString*)ABRecordCopyValue(person, kABPersonNoteProperty);
        if(note != nil)
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",note];
        //第一次添加该条记录的时间
        NSString *firstknow = (NSString*)ABRecordCopyValue(person, kABPersonCreationDateProperty);
        NSLog(@"第一次添加该条记录的时间%@\n",firstknow);
        //最后一次修改該条记录的时间
        NSString *lastknow = (NSString*)ABRecordCopyValue(person, kABPersonModificationDateProperty);
        NSLog(@"最后一次修改該条记录的时间%@\n",lastknow);

        //获取email多值
        ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty);
        int emailcount = ABMultiValueGetCount(email);    
        for (int x = 0; x < emailcount; x++)
        {
            //获取email Label
            NSString* emailLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x));
            //获取email值
            NSString* emailContent = (NSString*)ABMultiValueCopyValueAtIndex(email, x);
            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",emailLabel,emailContent];
        }
        //读取地址多值
        ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty);
        int count = ABMultiValueGetCount(address);    

        for(int j = 0; j < count; j++)
        {
            //获取地址Label
            NSString* addressLabel = (NSString*)ABMultiValueCopyLabelAtIndex(address, j);
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",addressLabel];
            //获取該label下的地址6属性
            NSDictionary* personaddress =(NSDictionary*) ABMultiValueCopyValueAtIndex(address, j);        
            NSString* country = [personaddress valueForKey:(NSString *)kABPersonAddressCountryKey];
            if(country != nil)
                textView.text = [textView.text stringByAppendingFormat:@"国家:%@\n",country];
            NSString* city = [personaddress valueForKey:(NSString *)kABPersonAddressCityKey];
            if(city != nil)
                textView.text = [textView.text stringByAppendingFormat:@"城市:%@\n",city];
            NSString* state = [personaddress valueForKey:(NSString *)kABPersonAddressStateKey];
            if(state != nil)
                textView.text = [textView.text stringByAppendingFormat:@"省:%@\n",state];
            NSString* street = [personaddress valueForKey:(NSString *)kABPersonAddressStreetKey];
            if(street != nil)
                textView.text = [textView.text stringByAppendingFormat:@"街道:%@\n",street];
            NSString* zip = [personaddress valueForKey:(NSString *)kABPersonAddressZIPKey];
            if(zip != nil)
                textView.text = [textView.text stringByAppendingFormat:@"邮编:%@\n",zip];    
            NSString* coutntrycode = [personaddress valueForKey:(NSString *)kABPersonAddressCountryCodeKey];
            if(coutntrycode != nil)
                textView.text = [textView.text stringByAppendingFormat:@"国家编号:%@\n",coutntrycode];    
        }

        //获取dates多值
        ABMultiValueRef dates = ABRecordCopyValue(person, kABPersonDateProperty);
        int datescount = ABMultiValueGetCount(dates);    
        for (int y = 0; y < datescount; y++)
        {
            //获取dates Label
            NSString* datesLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y));
            //获取dates值
            NSString* datesContent = (NSString*)ABMultiValueCopyValueAtIndex(dates, y);
            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",datesLabel,datesContent];
        }
        //获取kind值
        CFNumberRef recordType = ABRecordCopyValue(person, kABPersonKindProperty);
        if (recordType == kABPersonKindOrganization) {
            // it's a company
            NSLog(@"it's a company\n");
        } else {
            // it's a person, resource, or room
            NSLog(@"it's a person, resource, or room\n");
        }

        //获取IM多值
        ABMultiValueRef instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty);
        for (int l = 1; l < ABMultiValueGetCount(instantMessage); l++)
        {
            //获取IM Label
            NSString* instantMessageLabel = (NSString*)ABMultiValueCopyLabelAtIndex(instantMessage, l);
            textView.text = [textView.text stringByAppendingFormat:@"%@\n",instantMessageLabel];
            //获取該label下的2属性
            NSDictionary* instantMessageContent =(NSDictionary*) ABMultiValueCopyValueAtIndex(instantMessage, l);        
            NSString* username = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageUsernameKey];
            if(username != nil)
                textView.text = [textView.text stringByAppendingFormat:@"username:%@\n",username];

            NSString* service = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageServiceKey];
            if(service != nil)
                textView.text = [textView.text stringByAppendingFormat:@"service:%@\n",service];            
        }

        //读取电话多值
        ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty);
        for (int k = 0; k<ABMultiValueGetCount(phone); k++)
        {
            //获取电话Label
            NSString * personPhoneLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k));
            //获取該Label下的电话值
            NSString * personPhone = (NSString*)ABMultiValueCopyValueAtIndex(phone, k);

            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",personPhoneLabel,personPhone];
        }

        //获取URL多值
        ABMultiValueRef url = ABRecordCopyValue(person, kABPersonURLProperty);
        for (int m = 0; m < ABMultiValueGetCount(url); m++)
        {
            //获取电话Label
            NSString * urlLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m));
            //获取該Label下的电话值
            NSString * urlContent = (NSString*)ABMultiValueCopyValueAtIndex(url,m);

            textView.text = [textView.text stringByAppendingFormat:@"%@:%@\n",urlLabel,urlContent];
        }

        //读取照片
        NSData *image = (NSData*)ABPersonCopyImageData(person);

        UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(200, 0, 50, 50)];
        [myImage setImage:[UIImage imageWithData:image]];
        myImage.opaque = YES;
        [textView addSubview:myImage];

    }

    CFRelease(results);
    CFRelease(addressBook);
转自iOS分享网
 http://iosshare.cn
分享到:
评论

相关推荐

    iOS9 通讯录新框架Demo

    6. **处理联系人属性**:CNContact类提供了丰富的属性,如name(姓名)、phoneNumbers(电话号码)、emailAddresses(电子邮件地址)等,可以根据需求读取或设置。 7. **联系人分组**:Contacts框架还支持对联系人...

    iOS通讯录联系人列表较完整(中文排序)

    这个项目“iOS通讯录联系人列表较完整(中文排序)”显然旨在提供一个简单但功能完善的解决方案,特别是在处理中文姓名排序方面。以下是对这个话题的详细解释: 1. **访问iOS通讯录**: iOS的Contacts框架提供了访问...

    ios-通讯录.zip

    `keysToFetch`数组定义了我们希望获取的联系人属性,如名字、电话号码等。 3. **创建和更新联系人**:要创建新联系人,我们需要创建一个`CNMutableContact`对象,设置其属性(如名字、电话、邮箱等),然后调用`...

    ios-读取iOS10 iOS9通讯录.zip

    在iOS系统中,用户的联系人数据是通过苹果的Address Book框架进行管理的,该框架提供了访问和操作用户通讯录的功能。对于iOS 10和iOS 9这两个版本,虽然核心功能保持一致,但在某些API和权限管理方面可能存在细微...

    ios 获取通讯录的代码

    在Objective-C中,可以使用`ABAddressBookCopyArrayOfAllPeople`获取所有联系人: ```objc NSArray *allPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (ABRecordRef person in all...

    ios-高仿微信通讯录.zip

    本项目“ios-高仿微信通讯录.zip”旨在复刻微信通讯录的功能,包括联系人搜索、分组滑动以及交互效果。下面将详细解析这些关键知识点。 1. **联系人数据结构与管理**: - 在iOS应用中,通常使用Core Data来存储和...

    iOS 获取通讯录

    在iOS平台上,获取通讯录是开发过程中常见的需求,主要用于实现如联系人同步、社交应用功能等。本篇文章将深入探讨如何在iOS中访问并操作用户的通讯录,包括两种不同的实现方式:一种带有用户界面(UI),另一种则无...

    ios通讯录的字母索引

    我们可以通过CNContactStore的enumerateContacts(withKeysToFetch:)方法来获取所有联系人,并通过CNContact的givenName、familyName等属性获取联系人的名字。 接下来,为了实现字母索引,我们需要对这些名字进行...

    iOS9 通讯录新框架Contact Demo

    八、联系人属性键 Contacts框架提供了许多预定义的属性键,如CNLabelPhoneNumberMobile,CNLabelHome等,用于获取或设置联系人的特定属性。开发者也可以自定义属性键来扩展联系人信息。 九、同步和异步操作 ...

    iOS通讯录demo

    在`cellForRowAt`方法中填充数据,根据联系人的属性更新单元格。 4. **联系人详情视图**:点击列表中的联系人,可以跳转到详情视图。详情视图展示完整的联系人信息,包括所有电话、邮件和其他详细字段。使用`...

    swift-iOS通讯录联系人列表较完整(中文排序)

    本项目"swift-iOS通讯录联系人列表较完整(中文排序)"显然是一款专注于展示和管理用户设备通讯录的App,且特别强调了中文排序的功能。以下将详细解释该项目涉及的主要知识点。 1. **访问通讯录权限**:在iOS中,访问...

    ios开发之 通讯录

    本知识点将深入探讨如何在iOS中实现“ios开发之 通讯录”这一主题,包括如何通过按钮调用通讯录并获取联系人的手机号码。 首先,我们需要了解iOS的权限管理系统。在iOS 6及以后的版本中,系统对访问用户隐私数据如...

    iOS通讯录的demo

    这个"iOS通讯录的demo"就是一个实例,演示了如何使用AddressBookDemo来操作iOS设备上的联系人数据。下面我们将深入探讨AddressBook框架以及如何在实际应用中使用它。 AddressBook框架是iOS SDK的一部分,它提供了与...

    ios-电话通讯录-Demo.zip

    4. **联系人属性**: `CNContact`类代表了一个联系人,包含了丰富的属性,如名字、姓氏、电话号码、电子邮件地址等。你可以根据需求获取这些属性值。 5. **排序联系人**: 获取到联系人列表后,可以按照不同的...

    ios-获取通讯录信息.zip

    通过`keysToFetch`参数,可以选择需要获取的联系人属性。例如,如果只需要名字和电话,可以传递`[CNContactGivenNameKey, CNContactPhoneNumbersKey]`。这样可以减少内存消耗,提高性能。 6. **处理联系人数据**:...

    iOS设备通讯录获取,及其他小功能

    4. **处理联系人数据**:在枚举器的闭包中,你可以访问每个联系人的属性,如名字、姓氏和电话号码: ```swift for contact in contacts { let name = "\(contact.givenName ?? "") \(contact.familyName ?? "")" ...

    ios-iOS9以下使用通讯录获取名称和电话号码的一个小例子.zip

    在iOS9中,你需要请求`CNContactStore`的访问权限,然后使用`CNContact`对象来获取联系人信息。不过,由于这个示例主要关注iOS9以下的系统,我们没有涉及这部分内容。 总之,这个压缩包中的"SimpleAddressBook"项目...

    iOS两种获取通讯录方式

    可以指定需要获取的联系人属性,如姓名、电话号码等。 5. 处理结果:这些方法会返回一个`Operation`对象,需要在完成处理时进行操作。通常会在`completionHandler`中处理结果。 第二种方式是使用`AddressBook ...

    iOS 获取通讯录 最新方法 测试可用

    在iOS平台上,获取用户的通讯录...这个过程包括导入框架、创建`CNContactStore`实例、请求权限、设置要获取的联系人属性以及遍历和处理联系人数据。记得始终尊重用户的隐私权,清晰告知用户为何需要访问他们的通讯录。

Global site tag (gtag.js) - Google Analytics