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