【AddressBook】ABRecord(ABPerson) - 联系人信息

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) - 联系人信息)