OC
来源:互联网 发布:大学生防网络诈骗 编辑:程序博客网 时间:2024/06/11 14:40
好久没写博客了,婚结完了,也该开始写一点东西了,先从OC的整理开始。
通讯录一定要记得在 info.plist 文件里写上权限请求,不然后果很严重呦。
另外请记得加入“AddressBook.framework”,并且引用 #import<AddressBook/AddressBook.h>
一、代码
#pragma mark 获取通讯录内容- (void)haveAddressBook{ // 判断是否授权 ABAuthorizationStatus authorizationStatus = ABAddressBookGetAuthorizationStatus(); if (authorizationStatus == kABAuthorizationStatusNotDetermined) { // 请求授权 ABAddressBookRef addressBookRef = ABAddressBookCreate(); ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { if (granted) { // 授权成功 } else { // 授权失败 NSLog(@"授权失败!"); } }); } // 2. 获取所有联系人 ABAddressBookRef addressBookRef = ABAddressBookCreate(); CFArrayRef arrayRef = ABAddressBookCopyArrayOfAllPeople(addressBookRef); long count = CFArrayGetCount(arrayRef); for (int i = 0; i < count; i++) { NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:0]; //获取联系人对象的引用 ABRecordRef people = CFArrayGetValueAtIndex(arrayRef, i); //获取当前联系人名字 NSString *firstName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty)); /* 如果没有获取到联系人姓名,可以试试下面的两个方法,含义见文章最后。 firstName = (__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty)); firstName = (__bridge NSString*)(ABRecordCopyValue(people, kABPersonMiddleNameProperty)); */ //获取当前联系人的电话 数组 NSMutableArray *phoneArray = [[NSMutableArray alloc]init]; ABMultiValueRef phones = ABRecordCopyValue(people, kABPersonPhoneProperty); for (NSInteger j=0; j<ABMultiValueGetCount(phones); j++) { NSString *phone = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phones, j)); NSLog(@"phone=%@", phone); [phoneArray addObject:phone]; } //上方 phoneArray 为数组,是为了单人储存多个电话的情况设计。 }}
Privacy - Contacts Usage Description - 是否允许使用你的通讯录?
三、效果
四、联系人相关数据
//获取当前联系人姓氏 NSString *lastName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty)); //获取当前联系人中间名 NSString *middleName=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonMiddleNameProperty)); //获取当前联系人的名字前缀 NSString *prefix=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonPrefixProperty)); //获取当前联系人的名字后缀 NSString *suffix=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonSuffixProperty)); //获取当前联系人的昵称 NSString *nickName=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonNicknameProperty)); //获取当前联系人的名字拼音 NSString *firstNamePhoneic=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonFirstNamePhoneticProperty)); //获取当前联系人的姓氏拼音 NSString *lastNamePhoneic=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonLastNamePhoneticProperty)); //获取当前联系人的中间名拼音 NSString *middleNamePhoneic=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonMiddleNamePhoneticProperty)); //获取当前联系人的公司 NSString *organization=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonOrganizationProperty)); //获取当前联系人的职位 NSString *job=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonJobTitleProperty)); //获取当前联系人的部门 NSString *department=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonDepartmentProperty)); //获取当前联系人的生日 NSString *birthday=(__bridge NSDate*)(ABRecordCopyValue(people, kABPersonBirthdayProperty)); //获取当前联系人的备注 NSString *notes=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonNoteProperty)); //获取创建当前联系人的时间 注意是NSDate NSDate *creatTime=(__bridge NSDate*)(ABRecordCopyValue(people, kABPersonCreationDateProperty)); //获取最近修改当前联系人的时间 NSDate *alterTime=(__bridge NSDate*)(ABRecordCopyValue(people, kABPersonModificationDateProperty)); //获取地址 ABMultiValueRef address = ABRecordCopyValue(people, kABPersonAddressProperty); for (int j=0; j<ABMultiValueGetCount(address); j++) { //地址类型 NSString *type = (__bridge NSString *)(ABMultiValueCopyLabelAtIndex(address, j)); NSDictionary * tempDic = (__bridge NSDictionary *)(ABMultiValueCopyValueAtIndex(address, j)); //地址字符串,可以按需求格式化 NSString *adress = [NSString stringWithFormat:@"国家:%@\n省:%@\n市:%@\n街道:%@\n邮编:%@",[temDic valueForKey:(NSString*)kABPersonAddressCountryKey],[tempDic valueForKey:(NSString*)kABPersonAddressStateKey],[tempDic valueForKey:(NSString*)kABPersonAddressCityKey],[tempDic valueForKey:(NSString*)kABPersonAddressStreetKey],[tempDic valueForKey:(NSString*)kABPersonAddressZIPKey]]; } //获取当前联系人头像图片 NSData *userImage=(__bridge NSData*)(ABPersonCopyImageData(people)); //获取当前联系人纪念日 NSMutableArray *dateArr = [[NSMutableArray alloc]init]; ABMultiValueRef dates= ABRecordCopyValue(people, kABPersonDateProperty); for (NSInteger j=0; j<ABMultiValueGetCount(dates); j++) { //获取纪念日日期 NSDate *data =(__bridge NSDate*)(ABMultiValueCopyValueAtIndex(dates, j)); //获取纪念日名称 NSString *str =(__bridge NSString*)(ABMultiValueCopyLabelAtIndex(dates, j)); NSDictionary *tempDic = [NSDictionary dictionaryWithObject:data forKey:str]; [dateArr addObject:tempDic]; }
感谢观看,学以致用更感谢~
阅读全文
0 0
- oc
- oc
- OC
- OC
- OC
- oc
- oc
- oc
- OC
- OC
- oc
- oc
- OC
- OC
- OC
- oc
- oc
- OC
- 编程之路小细节-数组和集合作为参数的查询
- linux 文件操作:
- 数据库视图作用?什么时候用视图?
- Java面向对象、抽象、封装、继承、多态
- 不一样的随机数生成方法(C/C++)
- OC
- Error in invoking target 'client_sharedlib' of makefile '/crm/bip/Oracle_BI1/rdbms/lib/ins_rdbms.mk'
- Zabbix使用微信发送告警
- VC++实现按钮控件的底色、字体、颜色。亲测可用
- android 动画animation setRepeatCount不起作用
- JavaScript中的小技巧和注意点(二)
- Windows下编译libxls32位和64位链接库
- day04_元素案例
- SAA3010T红外解码