AddressBook.Framework应用之ABAddressBookRef,ABRecordRef,ABMutableMultiValueRef,ABMultiValueRef
来源:互联网 发布:调查问卷 代码java 编辑:程序博客网 时间:2024/06/08 05:56
AddressBook.framework是c api直接访问操作 通讯录数据库框架,AddressBookUI.framework是oc 界面交互框架;
以下代码是操作通讯录,纯c框架没有*指针定义,没有界面交互,只需导入AddressBook.framework框架。
ABAddressBookRef adbk=ABAddressBookCreate();//获取本地通讯录数据库
ABRecordRef moi=NULL;//联系人
ABRecordRef annkey=ABPersonCreate();//创建联系人
//设置联系人的值
ABRecordSetValue(annkey,kABPersonFirstNameProperty,@"annkey",NULL);
ABRecordSetValue(annkey,kABPersonLastNameProperty,@"hu",NULL);
//创建多值属性
ABMutableMultiValueRef addr=ABMultiValueCreateMutable(kABStringPropertyType);
//增加属性名和属性值,属性名为kABHomeLabel
ABMultiValueAddValueAndLabel(addr,@"annkey@qq.con",kABHomeLabel,NULL);
//设置联系人的多值邮箱属性
ABRecordSetValue(annkey,kABPersonEmailProperty, addr,NULL);
ABAddressBookAddRecord(adbk, annkey,NULL);//增加联系人
ABAddressBookSave(adbk,NULL);//保存联系人
CFRelease(addr);
CFRelease(annkey);//,即使是在arc机制里,c对象仍需手动释放
CFArrayRef sams=ABAddressBookCopyPeopleWithName(adbk, (CFStringRef)@"hu");//联系人数组,可能存在多个同名的联系人,需要通过其他属性来判断具体是哪个
for (CFIndex ix=0; ix<CFArrayGetCount(sams); ix++) {
// 从联系人数组多个sam中读取
ABRecordRef sam=CFArrayGetValueAtIndex(sams, ix);
// 获取联系人的名属性
CFStringRef last=ABRecordCopyValue(sam,kABPersonLastNameProperty);
NSLog(@" is find %@",last);
//找到符合条件的联系人
if (last&&CFStringCompare(last, (CFStringRef)@"annkey",0)==0) {
moi=sam;
}
if (last) {
//必须要判断cf对象是否为空,只有不是null才可被释放,如果不判断会报错。
CFRelease(last); //c对象需手动释放
}
}
if (NULL==moi) {
//此处通讯录肯定不为空,数据库是存在的
CFRelease(sams);
CFRelease(adbk);//c对象需手动释放
return;
}
//获取联系人的邮件属性,初始化为多值
ABMultiValueRef emails=ABRecordCopyValue(moi,kABPersonEmailProperty);
if (NULL==emails) {
NSLog(@"emails is null");
}
for (CFIndex ix=0; ix<ABMultiValueGetCount(emails); ix++) {
//联系人的属性名和属性值
CFStringRef labe1=ABMultiValueCopyLabelAtIndex(emails, ix);
CFStringRef value=ABMultiValueCopyValueAtIndex(emails, ix);
NSLog(@"i have a %@ address I%@",labe1,value);
CFRelease(labe1);
CFRelease(value);
}
NSLog(@"emails is null2");
CFRelease(emails);
CFRelease(sams);
CFRelease(adbk);
- AddressBook.Framework应用之ABAddressBookRef,ABRecordRef,ABMutableMultiValueRef,ABMultiValueRef
- iOS之ABAddressBookRef,ABRecordRef,ABMutableMultiValueRef,ABMultiValueRef应用
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- ABRecordRef
- ios开发 通信录AddressBook.framework
- AddressBook
- AddressBook
- AddressBook
- AddressBook
- IOS进阶 AddressBook.framework和AddressBookUI.framework访问通讯录
- 手机联系人相关AddressBookUI.Framwork和AddressBook.Framework
- iOS手机联系人相关AddressBookUI.Framwork和AddressBook.Framework
- IOS疯狂基础之AddressBook通讯录
- 读Qt示例之addressbook(一)
- ios中获取当前手机通讯录信息一、在工程中添加AddressBook.framework和AddressBookUI.framework
- iOS AddressBook
- 你可能不知道的Shell
- OGNL技术讲解
- JSP页面常用总结1
- ZOJ 1576(稳定婚姻系统-重名)
- Processing Bitmaps Off the UI Thread
- AddressBook.Framework应用之ABAddressBookRef,ABRecordRef,ABMutableMultiValueRef,ABMultiValueRef
- java生成二维码
- kmp算法源码-经过比较,这个源码的速度应该是移动最快的。
- 主键并非是一个字段,也可以是多个字段。
- ibus for centOS
- 挂载nfs文件系统
- 构建 Linux 文件系统
- Java多线程详解
- 第六届(2012)中国成都国际软件设计与应用大赛获奖名单