美文网首页
【AddressBook】ABRecord(ABPerson)

【AddressBook】ABRecord(ABPerson)

作者: 居然是村长 | 来源:发表于2016-06-15 23:13 被阅读639次

    ABRecord:联系人信息 基本记录
    ABPerson:联系人详细 信息帮助

    ABRecord 联系人信息(Base)

    • 获取信息
        // 信息 id
        ABRecordID recordId = ABRecordGetRecordID(person);
            
        // 信息 类型
        ABRecordType recordType = ABRecordGetRecordType(person);
            
        // 获取信息内部某条数据
        CFTypeRef firstName2 = ABRecordCopyValue(person, kABPersonFirstNameProperty);
    
        // 全名
        CFStringRef na = ABRecordCopyCompositeName(person);
    
    
    • 内部信息操作
        CFTypeRef name = @"名字";
        if (ABRecordSetValue(person, kABPersonFirstNameProperty, name, NULL)) {
            NSLog(@"修改信息 kABPersonFirstNameProperty 的属性");
        };
            
        if (ABRecordRemoveValue(person, kABPersonFirstNameProperty, NULL)) {
            NSLog(@"移除信息");
         }
    
    

    ABPerson

    • 创建 联系人 记录
        // 创建 联系人 基本记录
        ABRecordRef aRecordRef = ABPersonCreate();
        ABPersonCreateInSource(aRecordRef);
        ABPersonCopySource(aRecordRef);
    
    
    • 获取联系人 记录
        // 获取所有的联系人数量
        CFIndex count = ABAddressBookGetPersonCount(addressBook);
    
        // 根据 ID 获取联系人 记录
        ABRecordRef recordRef = ABAddressBookGetPersonWithRecordID(addressBook, 123);
    
        // 获取所有联系人 记录
        CFArrayRef peopleArray = ABAddressBookCopyArrayOfAllPeople(addressBook);
        
        //
        CFArrayRef parr = ABAddressBookCopyArrayOfAllPeopleInSource(addressBook, aRecordRef);
        
        // 新排序 的所有 联系人 记录
        CFArrayRef parrr = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, aRecordRef, kABPersonSortByFirstName);
        
        // 根据 名 搜索联系人
        CFArrayRef par = ABAddressBookCopyPeopleWithName(addressBook, (__bridge CFStringRef)@"祎炜");
        
    
    • 详细联系人 记录
        // 根据上面获取的联系人 记录数组获取某个联系人    
        ABRecordRef person = CFArrayGetValueAtIndex(peopleArray, i);
    
        
        // 单个数据(例:姓名)
        NSString *lastName = (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
        
        // 多个数据(例:电话号码)
        ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
        // 遍历获取数据
        CFIndex phoneCount = ABMultiValueGetCount(phones);
        for (int i = 0; i < phoneCount; i++) {
            // 1.获取电话对应的key
            NSString *phoneLabel = (__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex(phones, i);        
            NSString *phoneValue = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phones, i);
            NSLog(@"%@ %@", phoneLabel, phoneValue);
        }
        
        CFRelease(phones);
    
    
    • 联系人 头像 处理
        if (ABPersonHasImageData(person)) {
            NSLog(@"改联系人有头像哦");
            
            CFDataRef head = ABPersonCopyImageData(person);
            CFDataRef headOption = ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail);
            
            if (ABPersonRemoveImageData(person, NULL)) {
                NSLog(@"移除头像成功");
            }
            
            if (ABPersonSetImageData(person, headOption, NULL)) {
                NSLog(@"设置头像成功");
            }
        }
    
    • 生成名片(比如说发送给人家的名片)
        // 联系人记录 转 名片数据
        CFDataRef cd = ABPersonCreateVCardRepresentationWithPeople(peopleArray);
    
        // 名片数据 转 联系人记录
        CFArrayRef ca = ABPersonCreatePeopleInSourceWithVCardRepresentation(NULL, cd);
            
    
    • 其他
        // 信息属性
        ABPropertyType type = ABPersonGetTypeOfProperty(kABPersonFirstNameProperty);
        // 本地化属性标签
        CFStringRef local =  ABPersonCopyLocalizedPropertyName(kABPersonFirstNameProperty);
        // 排序?
        ABPersonSortOrdering order = ABPersonGetSortOrdering();
        
        // 人名显示顺序??
        ABPersonCompositeNameFormat nf = ABPersonGetCompositeNameFormat();
        // 人名显示顺序??
        ABPersonCompositeNameFormat nf2 = ABPersonGetCompositeNameFormatForRecord(person);
        
        // ???
        CFStringRef de = ABPersonCopyCompositeNameDelimiterForRecord(person);
    
    

    大量的 常量

    基本都是用作 key 的作用,不贴代码了
    例如:
    kABPersonFirstNameProperty - 姓
    kABPersonPhoneProperty - 手机s

    1

    相关文章

      网友评论

          本文标题:【AddressBook】ABRecord(ABPerson)

          本文链接:https://www.haomeiwen.com/subject/ldmpdttx.html