IOS编程:Address Book
在IOS中,允许用户对Address Book(地址簿)进行添加、编辑与删除操作。地址簿可以是一些人的集合,也可以是一系列群组的集合。里面的每一个人都有诸如姓氏、名字、电话号码、电子邮件等一系列属性。这些属性可以只有一个值,当然也可以有多个值,列入,一个人的姓氏只能有一个值,而他/她的电话号码却可以有多个值。
IOS SDK中的AddressBook.Framwork框架允许我们与iOS设备的地址簿数据库进行交互,我们可以通过它取得地址簿上所有人的相关信息,也可以对其中的一条或者多条数据进行查询、删除等操作。
为在应用程序中使用地址簿相关的函数,需要将地址簿框架添加到我们的应用程序中:
- 单击Xcode中的工程图标
- 选择欲添加地址簿框架的目标
- 选择屏幕顶部的Build Phases选项卡
- 在Build Phases选项卡中,找到并展开Link Binary选项,单击底部左下角的“+”按钮
- 在弹出的库列表中,选中AddressBook.Framwork,点击添加按钮即可
添加地址簿框架后,我们还需要在工程中添加相应的头文件:#import
查询
要进行地址簿的查询操作,首先要使用 ABAddressBookCreate函数创建一个地址簿数据库的引用,该函数返回一个ABAddressBookRef类型的值,如果地址簿数据库不能访问的话,则返回nil。在进行任何地址簿的操作之前,必须检查改制是否为nil,否者,当应用程序试图去编辑一个空的地址簿是,将会以一个运行时错误退出程序。
在取得地址簿引用后,就可以对地址簿进行查询、编辑等操作了,但需要注意的是,一旦你对地址簿进行任何改变,ABAddressBookHasUnsavedC
接下来,调用ABAddressBookCopyArrayOf
if(abRef != nil){
allarray = (__bridge_transfer NSArray *) ABAddressBookCopyArrayOf
}
CFRelease(abRef);
cell.textLabel.text = [[[NSString alloc] initWithFormat:@”%@%@”, (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonFirstNameProper
personView.personViewDelegate = self;
personView.displayedPerson = [allarray objectAtIndex:row];
personView.allowsEditing = YES; //是否允许编辑
[self.navigationController pushViewController:personView animated:YES];
[personView release];
编辑
除了调用ABPersonViewController编辑联系人外,还可以使用ABRecordSetValue函数和ABAddressBookAddRecord函数来添加或者修改联系人信息。或者使用IOS SDK自带的ABNewPersonViewControlle
ABRecordSetValue(abRef,kABPersonFirstNameProper
ABRecordSetValue(abRef,kABPersonEmailProperty,(__bridge CFTypeRef)@”wangrui15@gmail.com”,&errorRef);
ABRecordRef person = [allarray objectAtIndex:[indexPath row]];
ABAddressBookAddRecord(abRef, person, &errorRef);
newPersonView.newPersonViewDelegate = self;
UINavigationController *newNavigationController = [[UINavigationController alloc]
[self presentModalViewControll
[newPersonView release];
[newNavigationController release];
-(void) newPersonViewController:(ABNewPersonViewControlle
[newPersonView dismissModalViewControll
}
删除
删除联系人使用ABAddressBookRemoveRecor
if(abRef == nil)
return;
CFErrorRef errorRef = NULL;
ABAddressBookRemoveRecor