IOS编程:Address Book
2012-10-15 11:07
183 查看
IOS编程:Address Book
在IOS中,允许用户对Address Book(地址簿)进行添加、编辑与删除操作。地址簿可以是一些人的集合,也可以是一系列群组的集合。里面的每一个人都有诸如姓氏、名字、电话号码、电子邮件等一系列属性。这些属性可以只有一个值,当然也可以有多个值,列入,一个人的姓氏只能有一个值,而他/她的电话号码却可以有多个值。IOS SDK中的AddressBook.Framwork框架允许我们与iOS设备的地址簿数据库进行交互,我们可以通过它取得地址簿上所有人的相关信息,也可以对其中的一条或者多条数据进行查询、删除等操作。
为在应用程序中使用地址簿相关的函数,需要将地址簿框架添加到我们的应用程序中:
单击Xcode中的工程图标
选择欲添加地址簿框架的目标
选择屏幕顶部的Build Phases选项卡
在Build Phases选项卡中,找到并展开Link Binary选项,单击底部左下角的“+”按钮
在弹出的库列表中,选中AddressBook.Framwork,点击添加按钮即可
添加地址簿框架后,我们还需要在工程中添加相应的头文件:#import <AddressBook/AddressBook.h>
查询
要进行地址簿的查询操作,首先要使用 ABAddressBookCreate函数创建一个地址簿数据库的引用,该函数返回一个ABAddressBookRef类型的值,如果地址簿数据库不能访问的话,则返回nil。在进行任何地址簿的操作之前,必须检查改制是否为nil,否者,当应用程序试图去编辑一个空的地址簿是,将会以一个运行时错误退出程序。
在取得地址簿引用后,就可以对地址簿进行查询、编辑等操作了,但需要注意的是,一旦你对地址簿进行任何改变,ABAddressBookHasUnsavedChanges函数将返回一个YES值以告知地址簿发生变化了,此时,你可以使用ABAddressBookSave函数或者ABAddressBookRevert函数来保存或者忽略地址簿的变化。
接下来,调用ABAddressBookCopyArrayOfAllPeople函数来得到地址簿中的所有联系人信息,该函数的返回值是一个CFArrayRef类型的数组。之后遍历该数组,调用ABRecoredCopyValue函数便可得到每个联系人的相关信息。它包含两个参数,第一个参数是地址簿记录应用(ABRecordRef),第二个参数指定了你想要获得何种信息。例如,如果想要查询邮件地址,则第二个参数为kABPersonEmailProperty。当然,如果不想自己创建界面去展示这些内容时,我们还可以使用IOS
SDK自带的ABPersonViewController(需要引入AddressBookUI.Framwork框架和添加ABPersonViewControllerDeleagte)来展示和编辑联系人的相关信息。示例代码如下:
ABAddressBookRef abRef
= ABAddressBookCreate();
if(abRef
!= nil){
allarray =
(__bridge_transfer NSArray *) ABAddressBookCopyArrayOfAllPeople(abRef);
}
CFRelease(abRef);
ABRecordRef person
= [allarray objectAtIndex:[indexPath row]];
cell.textLabel.text =
[[[NSString alloc] initWithFormat:@”%@%@”,
(__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty),
(__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty)] autorelease];
ABPersonViewController *personView
= [[ABPersonViewController alloc] init];
personView.personViewDelegate = self;
personView.displayedPerson =
[allarray objectAtIndex:row];
personView.allowsEditing = YES; //是否允许编辑
[self.navigationController
pushViewController:personView animated:YES];
[personView release];
编辑
除了调用ABPersonViewController编辑联系人外,还可以使用ABRecordSetValue函数和ABAddressBookAddRecord函数来添加或者修改联系人信息。或者使用IOS
SDK自带的ABNewPersonViewController(需要引入AddressBookUI.Framwork框架和添加ABNewPersonViewControllerDeleagte)来添加一个新的联系人,但是别忘记实现相应的代理方法,否则程序会崩溃退出。
ABAddressBookRef abRef
= ABAddressBookCreate();
CFErrorRef errorRef
= NULL;
ABRecordSetValue(abRef,kABPersonFirstNameProperty,(__bridge CFTypeRef)@”HamGuy”,&errorRef);
ABRecordSetValue(abRef,kABPersonEmailProperty,(__bridgeCFTypeRef)@”wangrui15@gmail.com”,&errorRef);
ABRecordRef person
= [allarray objectAtIndex:[indexPath row]];
ABAddressBookAddRecord(abRef,
person, &errorRef);
ABNewPersonViewController *newPersonView
= [[ABNewPersonViewController alloc] init];
newPersonView.newPersonViewDelegate = self;
UINavigationController *newNavigationController
= [[UINavigationController alloc]
initWithRootViewController:newPersonView];
[self presentModalViewController:newNavigationController animated:YES];
[newPersonView release];
[newNavigationController release];
-(void)
newPersonViewController:(ABNewPersonViewController *)newPersonView
didCompleteWithNewPerson:(ABRecordRef)person{
[newPersonView dismissModalViewControllerAnimated:YES];
}
删除
删除联系人使用ABAddressBookRemoveRecord函数来实现,用法与ABAddressBookAddRecord函数类似,不在赘述。如果要清空地址簿的话,可循环调用该方法实现。
ABAddressBookRef abRef
= ABAddressBookCreate();
if(abRef
== nil)
return;
CFErrorRef errorRef
= NULL;
ABAddressBookRemoveRecord(abRef,[allarray
objectAtIndex:[indexPath row]],&errorRef);
相关文章推荐
- The Address Book does not contain a cross certificate capable of validating the public key
- address book api 图型
- iOS and OS X Network Programming Cookbook |Performing a network address resolution
- Access the Address Book
- Exchange 2010 Ps 之使用更新脱机地址簿系列命令get-offlineaddressbook&Update-offlineaddressbook
- Real VNC 5.1.1新增实用的技能:VNC Address Book
- 手机联系人相关AddressBookUI.Framwork和AddressBook.Framework
- iOS-----使用AddressBookUI管理联系人
- AddressBookUI获取通讯录
- 最终版address_book.c-1.0,接下来只要封装到makefile里就ok了
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- 设置、读取联络人头像 ---- save UIImage to ABAddressBook
- ABAddressBook & AddressBook UI 文件介绍(IOS开发)
- AddressBook.Framework应用之ABAddressBookRef,ABRecordRef,ABMutableMultiValueRef,ABMultiValueRef
- ios address book 操作大全
- IOS疯狂基础之AddressBook通讯录
- IOS addressbook框架
- AddressBookUI
- iPhone Programming: Adding a Contact to the iPhone Address Book
- AddressBookUI.Framwork应用之ABPeoplePickerNavigationController