手机通讯录联系人恢复信息修改要怎么实现

求问,手机怎么更改信息和联系人的显示模式?之前是那种通知类信息都归类的,我不知道点了哪里变成最初的了
已有2个回答
[特聘专家]
专家星级&:&2.3星
问答堂专家综合评分
问题评分&:&3.3星
采纳、点赞&:&0星
二次回复率&:&5星
内容为广告/垃圾,我要举报!
特聘专家具有协助内容审核的特权
举报后内容将不能在前台展示
错乱举报会导致该权利被剥夺
选择举报原因×
擅长领域:
参与话题:
你在通讯录里点击菜单,然后在跳出的设置里选择显示联系人模式。即可选择你想要显示的了
留下你的评论
[特聘专家]
专家星级&:&2.9星
问答堂专家综合评分
问题评分&:&4星
采纳、点赞&:&0星
二次回复率&:&5星
内容为广告/垃圾,我要举报!
特聘专家具有协助内容审核的特权
举报后内容将不能在前台展示
错乱举报会导致该权利被剥夺
选择举报原因×
擅长领域:
参与话题:
支持更改显示模式的手机,一般都是在联系人以及信息界面的设置中调整。以信息界面为例,你可以尝试如下操作:1.信息-菜单键2.选择模式,文件夹视图/聊天查看。
留下你的评论
微信公众账号ZOL问答堂
关注微信,随时随地解答您的疑惑
ZOL问答堂官方微博@ZOL问答堂
关注成功!该问题被回答后,将给您发送站内短信。
您也可以通过关注问答堂微信,及时获得您关注问题的回答。
微信关注问题方法“”Fan小柒 的BLOG
用户名:Fan小柒
文章数:38
访问量:913
注册日期:
阅读量:5863
阅读量:12276
阅读量:373757
阅读量:1067535
51CTO推荐博文
(注:使用MRC)一、功能描述:main函数中通过使用Person类和AddressBook类,创建对象、调用方法,实现以下8个功能:1).使用便利构造器创建四个Person类的实例(联系人).姓名:Lucy 性别:女 电话:123 年龄:21姓名:Joe 性别:男 电话:456 年龄:17姓名:Baby 性别:女 电话:789 年龄:27姓名:Linda 性别:女 电话:000 年龄:212).创建一个AddressBook类的实例对象(通讯录).3).使用AddressBook类中定义的方法实现:添加联系人,将四个联系人添加到通讯录中.4).使用AddressBook类中定义的方法实现:根据电话查找联系人,并打印(查找电话:456);5).使用AddressBook类中定义的方法实现:根据性别查找联系人,并将查到的联系人按照年龄升序排序,并打印(查找性别:女)6).使用AddressBook类中定义的方法实现:根据姓名,更改联系人信息.(修改Linda的信息: 性别:女 电话:012 年龄:25);7).使用AddressBook类中定义的方法实现:按照姓名删除联系人,并展示通信录中所有人信息.(删除联系人:Baby)8).使用AddressBook类中定义的方法实现:删除一个分组,并展示通信录中所有人信息.(删除L组)9).使用AddressBook类中定义的方法实现:实现3~8之间每个功能后,输出通讯录中所有联系人信息。二、功能实现提示:1、功能一定义Person类1)声明属性:姓名,年龄,性别,电话,分组。注:年龄是int类型,其余属性时NSString类型;分组是姓名首字母(大写),使用提供的类目:NSString+Characters中的方法获取。(3分)2)重写description方法,输出Person对象的信息。例如: “姓名:张三 & 性别:男 & 年龄:22 & 电话:”.(2分)3)定义Person类的便利构造器方法,方法包含参数:姓名、年龄、性别、电话.(5分)2、功能二定义AddressBook类.1)声明属性:allPersonDic(字典类型)。使用声明的字典作为容器,分组管理通讯录中所有联系人;字典的Key值为分组名(姓名首字母,大写),value值为数组,数组中存放联系人(Person实例).(5分)2)在AddressBook的初始化方法中,初始化allPersonDic。(5分)3)重写dealloc方法,在dealloc方法中实现AddressBook类的内存管理。(5分)3、功能三添加联系人.要求(15分)a.在AddressBook类中定义方法:- (BOOL)addPerson:(Person *)aPb.判断姓名和电话不能为空否则添加失败.c.判断是否已经存在分组,存在直接存储.不存在创建分组后再存储.(注:联系人不能有重名).d.添加成功返回YES,姓名为空或者有重名的添加失败返回NO.e.数据使用Person存储.4、功能四根据电话查找某个联系人.(10分)a:在AddressBook类中定义方法:-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNb:如果找到返回该联系人,否则返回nil.c.忽略电话重复问题,只返回第一个查找到的联系人。5、功能五根据性别查找联系人,并将查到的联系人按照年龄升序排序(15分)a:在AddressBook类中定义方法:-(NSArray *)findPersonsWithSex:(NSString *)aSb:查找到联系人放入数组,排序的时候使用block.6、功能六根据姓名,更改联系人信息.(10分)a:在AddressBook类中定义方法:-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger) aAb:找到该联系人并修改该成功返回YES,否则返回NOc.修改电话、性别、年龄,参数不能为空。7、功能七按照姓名删除联系人.(15分)a.在AddressBook类中定义方法:- (BOOL)deletePersonWithName:(NSString*)aPersonNb.删除成功返回YES,否则返回NO;c.当删除联系人后分组为空时,需要删除该分组。8、功能八删除一个分组.(5分)a.在AddressBook类中定义方法:- (BOOL)deleteGroup:(NSString *)aGroupNb.删除成功返回YES,否则返回NO;9、功能九展示通讯录中的所有联系人信息(5分)a:在AddressBook类中定义方法:-(void)showAb.通过重写description方法展示联系人信息 。Person.h#import&&Foundation/Foundation.h&
@interface&Person&:&NSObject
//声明属性
@property&(nonatomic&,&retain)&NSString&*
@property&(nonatomic&,&retain)NSString&*
@property&(nonatomic&,&assign)int&
@property&(nonatomic&,&retain)
&&&&NSString&*phoneN
@property&(nonatomic&,&retain)NSString&*groupN
//声明初始化方法
-&(id)initWithPersonName:(NSString&*)name
&&&&&&&&&&&&&&&&&&&&&age:(int)age
&&&&&&&&&&&&&&&&&&gender:(NSString&*)gender
&&&&&&&&&&&&&phoneNumber:(NSString&*)phoneNumber
&&&&&&&&&&&&&&&groupName:(NSString&*)groupN
//便利构造器
+&(id)personWithName:(NSString&*)name
&&&&&&&&&&&&&&&&&age:(int)age
&&&&&&&&&&&&&&gender:(NSString&*)gender
&&&&&&&&&phoneNumber:(NSString&*)phoneNumber
&&&&&&&&&&&groupName:(NSString&*)groupN
@endPerson.m#import&"Person.h"
@implementation&Person
-&(id)initWithPersonName:(NSString&*)name&age:(int)age&gender:(NSString&*)gender&phoneNumber:(NSString&*)phoneNumber&groupName:(NSString&*)groupName{
&&&&if&(self&=&[super&init])&{
&&&&&&&&self.name&=&
&&&&&&&&self.age&=&
&&&&&&&&self.phoneNumber&=&phoneN
&&&&&&&&self.gender&=&
&&&&&&&&self.groupName&=&groupN
&&&&return&
+&(id)personWithName:(NSString&*)name
&&&&&&&&&&&&&&&&&age:(int)age
&&&&&&&&&&&&&&gender:(NSString&*)gender
&&&&&&&&&phoneNumber:(NSString&*)phoneNumber
&&&&&&&&&&&groupName:(NSString&*)groupName{
&&&&Person&*person&=&[[[Person&alloc]initWithPersonName:name&age:age&gender:gender&phoneNumber:phoneNumber&groupName:groupName]&autorelease];
&&&&return&
//重写父类的方法,默认情况是打印对象的地址。
-&(NSString&*)description{
&&&&return&[NSString&stringWithFormat:@"&&姓名:%@&,性别:%@&,&年龄:%d&&,&电话:%@&,&分组名:%@&&&&",&_name&,&_gender&&,&_age,&_phoneNumber&,&_groupName&];
-&(void)dealloc{
&&&&NSLog(@"%s"&,&__FUNCTION__);
&&&&[_name&release];
&&&&[_gender&release];
&&&&[_phoneNumber&release];
&&&&[_groupName&release];
&&&&[super&dealloc];
@endAddressBook.h#import&&Foundation/Foundation.h&
#import&"Person.h"
@interface&AddressBook&:&NSObject
//声明一个字典,用来存储联系人
@property&(nonatomic&,&retain)&NSMutableDictionary&*allPersonD
//初始化方法
-&(id)initWithMutableDic:(NSMutableDictionary&*)
//声明方法,添加联系人
-&(BOOL)addPerson:(Person&*)aP
//按照电话查找某个联系人
-&(Person&*)findPersonWithPhoneNumber:(NSString&*)aPhoneN
//按性别查找,并且排序
-&(NSArray&*)findPersonWithSex:(NSString&*)
//根据姓名,来修改联系人的信息
-&(BOOL)changePersonWithName:(NSString&*)name
&&&&&&&&&&&&&&&&&phoneNumber:(NSString&*)phoneNumber
&&&&&&&&&&&&&&&&&&&&&&&&&sex:(NSString&*)sex
&&&&&&&&&&&&&&&&&&&&&&&&&age:(int)
//删除联系人
-&(BOOL)deletePersonWithName:(NSString&*)
//删除分组
-&(BOOL)deleteGroupName:(NSString&*)aG
//打印所有的人
-&(void)showA
@endAddressBook.m#import&"AddressBook.h"
#import&"NSString+Character.h"
@implementation&AddressBook
-&(id)initWithMutableDic:(NSMutableDictionary&*)dic{
&&&&if&(self&=&[super&init])&{
&&&&&&&&_allPersonDic&=&
&&&&return&
-&(void)dealloc{
&&&&[_allPersonDic&release];
&&&&[super&dealloc];
//实现添加联系人的方法
-&(BOOL)addPerson:(Person&*)aPerson{
&&//第一步,先判断名字和电话
&&&&if&((aPerson.name&==&nil&||&aPerson.phoneNumber&==&nil&)&||&([aPerson.name&isEqualToString:@""]&||&[aPerson.phoneNumber&isEqualToString:@""]))&{
&&&&&&&&NSLog(@"信息不完整,添加失败");
&&&&&&&&return&NO;
&&&&//获取名字的首字母,并且大写。当作字典的key(键)
&&&&NSString&*keyStr&=&[aPerson.name&&uppercaseFirstLetter];
&&&&//通过键来查找数组
&&&&NSMutableArray&*tempArray&=&&&&[_allPersonDic&objectForKey:keyStr];
&&&&if&(!&tempArray)&{
&&&&&&&&//给数组分配空间
&&&&&&&&tempArray&=&[[NSMutableArray&alloc]init];
&&&&&&&&//创建键值对
&&&&&&&&[_allPersonDic&setObject:tempArray&forKey:keyStr];
&&&&//检查一下是否有重名的
&&&&for&(int&i&=&0;&i&&&[tempArray&count];&i&++)&{
&&&&&&&&if&([aPerson.name&isEqualToString:[tempArray[i]&name]])&{
&&&&&&&&&&&&NSLog(@"有重名的,添加失败");
&&&&&&&&&&&&return&NO;
&&&&//把联系人加进创建好的数组里面
&&&&[tempArray&addObject:aPerson];
&&&&return&YES;
//实现按照号码找人的方法
-&(Person&*)findPersonWithPhoneNumber:(NSString&*)aPhoneNumber{
&&&&//第一步,把字典里面的键拿出来,通过键来取值
&&&&for&(NSString&*keyStr&in&_allPersonDic)&{
&&&&&&&&//通过objectForKey:&这个方法,把字典里面的数组拿出来
&&&&&&&&NSMutableArray&*tempArray&=&[_allPersonDic&objectForKey:keyStr];
&&&&&&&&//遍历拿出来的数组,让数组里面每一个人的号码,和&形参的值进行比较。
&&&&&&&&for&(Person&*p&in&tempArray)&{
&&&&&&&&&&&&
&&&&&&&&&&&&if&([p.phoneNumber&isEqualToString:aPhoneNumber])&{
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&NSLog(@"人找到了");
&&&&&&&&&&&&&&&&return&p;
&&&&&&&&&&&&}
&&&&NSLog(@"没有找到该联系人");
&&&&return&
//实现方法
-&(NSArray&*)findPersonWithSex:(NSString&*)sex{
&&&//声明数组,用来储存性别相同的人
&&&&NSMutableArray&*mutableArray&=&[[NSMutableArray&alloc]init];
&&&&//然后再开始,遍历字典,拿到键值,遍历数组
&&&&for&(NSString&*keyStr&in&_allPersonDic)&{
&&&&&&&&NSMutableArray&*array&=&[_allPersonDic&objectForKey:keyStr];
&&&&&&&&for&(Person&*person&in&array)&{
&&&&&&&&&&&&//跟上一方法不同的地方
&&&&&&&&&&&&if&([person.gender&isEqualToString:sex])&{
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&[mutableArray&addObject:person];
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&[mutableArray&sortUsingComparator:^NSComparisonResult(id&obj1,&id&obj2)&{
&&&&&&&&Person&*per1&=&(Person&*)obj1;
&&&&&&&&Person&*per2&=&(Person&*)obj2;
&&&&&&&&if&(&per1.age&&&&per2.age&)&{
&&&&&&&&&&&&return&NSOrderedD
&&&&&&&&else&if&(per1.age&&&per2.age){
&&&&&&&&return&NSOrderedA
&&&&&&&&return&NSOrderedS
&&//&&[mutableArray&sortUsingSelector:@selector(compare:)];
&&&&return&mutableA
//实现修改方法
-&(BOOL)changePersonWithName:(NSString&*)name&phoneNumber:(NSString&*)phoneNumber&sex:(NSString&*)sex&age:(int)age{
&&&&//第一步,先遍历
&&&&for&(NSString&*keyStr&&in&_allPersonDic)&{
&&&&&&&&//通过key来取值
&&&&&&&&NSMutableArray&*tempArray&=&[_allPersonDic&objectForKey:keyStr];
&&&&&&&&//开始遍历数组
&&&&&&&&for&(Person&*person&in&tempArray)&{
&&&&&&&&&&&&if&([person.name&isEqualToString:name])&{
&&&&&&&&&&&&&&&&//找到人后,开始修改,把传进来的新的信息赋值给这个人
&&&&&&&&&&&&&&&&person.phoneNumber&=&phoneN
&&&&&&&&&&&&&&&&person.gender&=&
&&&&&&&&&&&&&&&&person.age&=&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&NSLog(@"赋值成功");
&&&&&&&&&&&&&&&&return&YES;
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&return&NO;
-&(BOOL)deletePersonWithName:(NSString&*)name{
&&&&for&(NSString&*keyStr&in&_allPersonDic)&{
&&&&&&&&NSMutableArray&*tempArray&=&[_allPersonDic&objectForKey:keyStr];
&&&&&&&&//遍历数组
&&&&&&&&for&(Person&*person&in&tempArray)&{
&&&&&&&&&&&&if&([person.name&isEqualToString:name])&{
&&&&&&&&&&&&&&&&[tempArray&removeObject:person];
&&&&&&&&&&&&&&&&NSLog(@"找到要删除的人了");
&&&&&&&&&&&&&&&&//如果这个人,是分组里面最后一个,就把分组也删除
&&&&&&&&&&&&&&&&if&([tempArray&count]&==&0)&{
&&&&&&&&&&&&&&&&&&&&//在字典里面删除键值对
&&&&&&&&&&&&&&&&&&&&[_allPersonDic&removeObjectForKey:keyStr];
&&&&&&&&&&&&&&&&&&&&NSLog(@"数组已经被删除");
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&return&YES;
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&NSLog(@"没有找到");
&&&&return&NO;
//实现删除分组的方法
-&(BOOL)deleteGroupName:(NSString&*)aGroupname{
&&&&//先判断,有么有这个分组
&&&&for&(NSString&*keyStr&in&_allPersonDic)&{
&&&&&&&&if&([keyStr&isEqualToString:aGroupname])&{
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&//先通过传进来的键,来获取字典里面的值(数组)
&&&&&&&&&&&&NSMutableArray&*tempArray&=&[_allPersonDic&objectForKey:aGroupname];
&&&&&&&&&&&&//删完这个数组里面的所有元素
&&&&&&&&&&&&[tempArray&removeAllObjects];
&&&&&&&&&&&&//删除字典里面的键值对,通过键来删除
&&&&&&&&&&&&[_allPersonDic&removeObjectForKey:aGroupname];
&&&&&&&&&&&&NSLog(@"找到分组,删除成功");
&&&&&&&&&&&&return&YES;
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&NSLog(@"没有这个分组");
&&&&return&NO;
//打印所有人
-&(void)showAll{
&&&&for&(NSString&*key&in&_allPersonDic)&{
&&&&&&&&NSMutableArray&*array&=&[_allPersonDic&objectForKey:key];
&&&&&&&&for&(Person&*person&in&array)&{
&&&&&&&&&&&&NSLog(@"%@"&,&person);
@endNSString+Character.h#import&&Foundation/Foundation.h&
@interface&NSString&(Character)
-&(NSString&*)uppercaseFirstL
@endNSString+Character.m@implementation&NSString&(Character)
-&(NSString&*)uppercaseFirstLetter{
&&&&return&[[self&uppercaseString]&substringToIndex:1];
@endmain.m#import&&Foundation/Foundation.h&
#import&"Person.h"
#import&"AddressBook.h"
int&main(int&argc,&const&char&*&argv[])&{
&&&&//&创建三个对象,就是三个人啊
&&&&&&&&Person&*person&=&[[Person&alloc]initWithPersonName:@"Auroua"&age:21&gender:@"girl"&phoneNumber:@""&groupName:@"friend"];
&&&&&&&&&NSLog(@"%@"&,&person);
&&&&&&&&Person&*person1&=&[[Person&alloc]initWithPersonName:@"Lily"&age:18&gender:@"girl"&phoneNumber:@""&groupName:@"firend"];
&&&&&&&&Person&*person4&=&[[Person&alloc]initWithPersonName:@"DaShi"&age:18&gender:@"boy"&phoneNumber:@"110"&groupName:@"fff"];
&&&&//声明完容器类之后,一定给它开辟空间。
&&&&AddressBook&*addressBook&=&[[AddressBook&alloc]initWithMutableDic:[NSMutableDictionary&dictionary]];
&&&&//判断person对象是否加进字典里面
&&&&BOOL&result&=&[addressBook&addPerson:person];
&&&&NSLog(@"result&=&%@"&,&result&?&@"YES"&:&@"NO"&);
&&&&//判断person1对象是否加进字典里面
&&&&&BOOL&result1&=&[addressBook&addPerson:person1];
&&&&NSLog(@"result1&=%@"&,&result1&?&@"YES"&:&@"NO"&);
&&&&//判断person11对象是否加进字典里面
&&&&BOOL&result11&=&[addressBook&addPerson:person4];
&&&&NSLog(@"result11&=%@"&,&result11&?&@"YES"&:&@"NO"&);
&&&&//查找联系人
&&&&Person&*tempPerson&=&[addressBook&findPersonWithPhoneNumber:@""];
&&&&NSLog(@"%@"&,&tempPerson);
&&&&//接收排序结束后的数组
&&&&NSArray&*array&=&[addressBook&findPersonWithSex:@"girl"];
&&&&NSLog(@"排序后的结果");
&&&&for&(Person&*per&in&array)&{
&&&&&&&&NSLog(@"%@"&,&per);
&&&&//改变联系人信息,判断是否改变成功
&&&BOOL&result2&=&[addressBook&changePersonWithName:@"Lily"&phoneNumber:@"123"&sex:@"boy"&age:40];
&&&&NSLog(@"%@"&,&result2&?&@"YES"&:&@"NO");
&&&&//按名字删除一个联系人,删除了Lily
&&&&BOOL&result3&=&[addressBook&deletePersonWithName:@"Lily"];
&&&&NSLog(@"%@"&,&result3&?&@"YES"&:&@"NO");
&&&&//刚刚删除了Lily,现在把Lily加进来
&&&&[addressBook&addPerson:person1];
&&&&//删除某一个分组
&&BOOL&result5&=&&&[addressBook&deleteGroupName:@"D"];
&&&&NSLog(@"%@"&,&result5&?&@"YES"&:&@"NO");
&&&&//展示分组里面的所有的信息
&&&&[addressBook&showAll];
&&&&return&0;
}本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)当前位置:
& Swift - 访问通讯录联系人(使用纯代码实现)
Swift - 访问通讯录联系人(使用纯代码实现)
发布:hangge
阅读:2725
1,通讯录访问介绍
通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息。要实现访问通讯录有如下两种方式:
(1)AddressBook.framework框架 : 没有界面,通过代码来获取所有联系人信息(本文样例使用此方式)
(2)AddressBookUI.framework框架 : 通过系统提供的通讯录交互界面来访问
2,联系人记录的属性
在一条联系人记录中,有很多属性,而这些属性又分为单值属性和多值属性。
(1)单值属性是只有一个值的属性:
kABPersonLastNameProperty :姓
kABPersonFirstNameProperty :名
kABPersonMiddleNameProperty :中间名
kABPersonPrefixProperty :前缀
kABPersonSuffixProperty :后缀
kABPersonLastNamePhoneticProperty :姓氏汉语拼音或音标
kABPersonFirstNamePhoneticProperty :名字汉语拼音或音标
kABPersonNicknameProperty :昵称
kABPersonOrganizationProperty :公司(组织)
kABPersonJobTitleProperty :职位
kABPersonDepartmentProperty :部门
kABPersonNoteProperty :备注
(2)多值属性是包含多个值的集合类型:
kABPersonPhoneProperty :电话
kABPersonEmailProperty :Email
kABPersonAddressProperty :地址
kABPersonURLProperty : URL属性
kABPersonDateProperty :纪念日
kABPersonInstantMessageProperty :获取即时通讯(IM)
kABPersonSocialProfileProperty :社交账号
kABPersonRelatedNamesProperty :亲属关系人
3,多值属性标签的本地名称
在多值属性中包含了label(标签)、value(值)和ID等部分,其中标签和值都是可以重复的,而ID是不能重复的。
对于标签,我们可以使用ABAddressBookCopyLocalizedLabel()方法转为本地标签名(即能看得懂的标签名,比如work、home)。要不然打印出来的是_$!&Home&!$_,_$!&Work&!$_这样的数据。
4,下面样例使用代码遍历所有的联系人,并打印输出相关属性
import UIKit
import AddressBook
import AddressBookUI
class ViewController: UIViewController {
//address Book对象,用来获取电话簿句柄
var addressBook:ABAddressBookRef?
override func viewDidLoad() {
super.viewDidLoad()
//定义一个错误标记对象,判断是否成功
var error:Unmanaged&CFErrorRef&?
addressBook = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue()
//发出授权信息
let sysAddressBookStatus = ABAddressBookGetAuthorizationStatus()
if (sysAddressBookStatus == ABAuthorizationStatus.NotDetermined) {
println("requesting access...")
var errorRef:Unmanaged&CFError&? = nil
//addressBook = extractABAddressBookRef(ABAddressBookCreateWithOptions(nil, &errorRef))
ABAddressBookRequestAccessWithCompletion(addressBook, { success, error in
if success {
//获取并遍历所有联系人记录
self.readRecords();
println("error")
else if (sysAddressBookStatus == ABAuthorizationStatus.Denied ||
sysAddressBookStatus == ABAuthorizationStatus.Restricted) {
println("access denied")
else if (sysAddressBookStatus == ABAuthorizationStatus.Authorized) {
println("access granted")
//获取并遍历所有联系人记录
self.readRecords();
//获取并遍历所有联系人记录
func readRecords(){
var sysContacts:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook)
.takeRetainedValue() as NSArray
for contact in sysContacts {
var lastName = ABRecordCopyValue(contact, kABPersonLastNameProperty)?
.takeRetainedValue() as! String? ?? ""
println("姓:\(lastName)")
var firstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?
.takeRetainedValue() as! String? ?? ""
println("名:\(firstName)")
var nikeName = ABRecordCopyValue(contact, kABPersonNicknameProperty)?
.takeRetainedValue() as! String? ?? ""
println("昵称:\(nikeName)")
//公司(组织)
var organization = ABRecordCopyValue(contact, kABPersonOrganizationProperty)?
.takeRetainedValue() as! String? ?? ""
println("公司(组织):\(organization)")
var jobTitle = ABRecordCopyValue(contact, kABPersonJobTitleProperty)?
.takeRetainedValue() as! String? ?? ""
println("职位:\(jobTitle)")
var department = ABRecordCopyValue(contact, kABPersonDepartmentProperty)?
.takeRetainedValue() as! String? ?? ""
println("部门:\(department)")
var note = ABRecordCopyValue(contact, kABPersonNoteProperty)?
.takeRetainedValue() as! String? ?? ""
println("备注:\(note)")
//获取电话
var phoneValues:ABMutableMultiValueRef? =
ABRecordCopyValue(contact, kABPersonPhoneProperty).takeRetainedValue()
if phoneValues != nil {
println("电话:")
for i in 0 ..& ABMultiValueGetCount(phoneValues){
// 获得标签名
var phoneLabel = ABMultiValueCopyLabelAtIndex(phoneValues, i).takeRetainedValue()
as CFStringR
// 转为本地标签名(能看得懂的标签名,比如work、home)
var localizedPhoneLabel = ABAddressBookCopyLocalizedLabel(phoneLabel)
.takeRetainedValue() as! String
var value = ABMultiValueCopyValueAtIndex(phoneValues, i)
var phone = value.takeRetainedValue() as! String
\(localizedPhoneLabel):\(phone)")
//获取Email
var emailValues:ABMutableMultiValueRef? =
ABRecordCopyValue(contact, kABPersonEmailProperty).takeRetainedValue()
if emailValues != nil {
println("Email:")
for i in 0 ..& ABMultiValueGetCount(emailValues){
// 获得标签名
var label = ABMultiValueCopyLabelAtIndex(emailValues, i).takeRetainedValue()
as CFStringR
var localizedLabel = ABAddressBookCopyLocalizedLabel(label)
.takeRetainedValue() as! String
var value = ABMultiValueCopyValueAtIndex(emailValues, i)
var email = value.takeRetainedValue() as! String
\(localizedLabel):\(email)")
//获取地址
var addressValues:ABMutableMultiValueRef? =
ABRecordCopyValue(contact, kABPersonAddressProperty).takeRetainedValue()
if addressValues != nil {
println("地址:")
for i in 0 ..& ABMultiValueGetCount(addressValues){
// 获得标签名
var label = ABMultiValueCopyLabelAtIndex(addressValues, i).takeRetainedValue()
as CFStringR
var localizedLabel = ABAddressBookCopyLocalizedLabel(label)
.takeRetainedValue() as! String
var value = ABMultiValueCopyValueAtIndex(addressValues, i)
var addrNSDict:NSMutableDictionary = value.takeRetainedValue()
as! NSMutableDictionary
var country:String = addrNSDict.valueForKey(kABPersonAddressCountryKey as String)
as? String ?? ""
var state:String = addrNSDict.valueForKey(kABPersonAddressStateKey as String)
as? String ?? ""
var city:String = addrNSDict.valueForKey(kABPersonAddressCityKey as String)
as? String ?? ""
var street:String = addrNSDict.valueForKey(kABPersonAddressStreetKey as String)
as? String ?? ""
var contryCode:String = addrNSDict
.valueForKey(kABPersonAddressCountryCodeKey as String) as? String ?? ""
\(localizedLabel): Contry:\(country) State:\(state) ")
println("City:\(city) Street:\(street) ContryCode:\(contryCode) ")
//获取纪念日
var dateValues:ABMutableMultiValueRef? =
ABRecordCopyValue(contact, kABPersonDateProperty).takeRetainedValue()
if dateValues != nil {
println("纪念日:")
for i in 0 ..& ABMultiValueGetCount(dateValues){
// 获得标签名
var label = ABMultiValueCopyLabelAtIndex(emailValues, i).takeRetainedValue()
as CFStringR
var localizedLabel = ABAddressBookCopyLocalizedLabel(label)
.takeRetainedValue() as! String
var value = ABMultiValueCopyValueAtIndex(dateValues, i)
var date = (value.takeRetainedValue() as? NSDate)?.description ?? ""
\(localizedLabel):\(date)")
//获取即时通讯(IM)
var imValues:ABMutableMultiValueRef? =
ABRecordCopyValue(contact, kABPersonInstantMessageProperty).takeRetainedValue()
if imValues != nil {
println("即时通讯(IM):")
for i in 0 ..& ABMultiValueGetCount(imValues){
// 获得标签名
var label = ABMultiValueCopyLabelAtIndex(imValues, i).takeRetainedValue()
as CFStringR
var localizedLabel = ABAddressBookCopyLocalizedLabel(label)
.takeRetainedValue() as! String
var value = ABMultiValueCopyValueAtIndex(imValues, i)
var imNSDict:NSMutableDictionary = value.takeRetainedValue()
as! NSMutableDictionary
var serves:String = imNSDict
.valueForKey(kABPersonInstantMessageServiceKey as String) as? String ?? ""
var userName:String = imNSDict
.valueForKey(kABPersonInstantMessageUsernameKey as String) as? String ?? ""
\(localizedLabel): Serves:\(serves) UserName:\(userName)")
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作。

我要回帖

更多关于 苹果删除通讯录联系人 的文章

 

随机推荐