手机访问地址薄
1.首先加入包AddressBookUI、AddressBook并引入类。其次加入地址薄调用遵循的协议
#import <AddressBookUI/AddressBookUI.h>
#import <AddressBook/AddressBook.h>
//协议
ABPeoplePickerNavigationControllerDelegate
2.实现协议的部分方法,用来处理选择地址薄信息或者关闭地址操作等
//当地址关闭时处理部分信息: 如果关闭模态等,在第七记录中已经写过
-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
//处理选择地址薄后怎么解析person信息
-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
3.解析选择的地址薄信息
-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
NSString *firstName, *lastName;
//对于地址薄中的firstName, lastName都是唯一的不会重复,故直接转化字符串
firstName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
lastName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
//电话是多个, 要用数组来处理
ABMultiValueRef telRef;
telRef = ABRecordCopyValue(person, kABPersonPhoneProperty);
if (ABMultiValueGetCount(telRef) > 0) {
NSString * tel = (__bridge NSString *)ABMultiValueCopyValueAtIndex(telRef, 1);
}
//Email 和电话类似
ABMultiValueRef emailRef;
emailRef = ABRecordCopyValue(person, kABPersonEmailProperty);
if (ABMultiValueGetCount(emailRef) > 0) {
email.text = (__bridge NSString *)ABMultiValueCopyValueAtIndex(emailRef, 0);
}
//而相对于地址来说比较复杂。 地址信息包含信息量比较大
ABMultiValueRef addressRef;
NSDictionary *addressDic;
NSString *zipCode;
addressRef = ABRecordCopyValue(person, kABPersonAddressProperty);
if (ABMultiValueGetCount(addressRef) > 0) {
addressDic = (__bridge NSDictionary *)ABMultiValueCopyValueAtIndex(addressRef, 0);
zipCode = [addressDic objectForKey: @"ZIP"];
}
//关闭模态
[self dismissViewControllerAnimated: YES completion: nil];
return NO;
}
分享到:
相关推荐
总的来说,“AddressBook”项目涵盖了iOS应用开发的诸多基础知识,包括UI设计、数据模型、用户交互以及应用间通信。对于初学者来说,这是一个很好的实践项目,可以深入理解iOS开发的各个环节;对于有经验的开发者,...
《深入解析iOS应用源码:AddressBookTest...通过学习和实践AddressBookTest项目,开发者不仅能掌握iOS地址簿框架的使用,还能了解到权限管理、数据操作和UI交互等多个方面的知识,为构建更复杂的iOS应用打下坚实基础。
3. **添加联系人**:创建`CNMutableContact`对象,填充联系人信息,然后调用`CNContactStore`的`save(_:to:completionHandler:)`方法将其保存到通讯录。 4. **删除联系人**:找到要删除的联系人`CNContact`对象,...
通过以上知识点的详细介绍,我们可以看到,在iOS 5编程中操作通讯录并非简单的函数调用,而是需要综合考虑权限管理、数据安全以及用户体验等多个方面。对于开发者而言,掌握这些细节不仅有助于构建功能强大的应用,...
通过理解这个项目的实现,开发者可以更好地掌握OC的基础知识,为更复杂的iOS应用开发打下坚实的基础。在实际开发中,还可以考虑添加更多功能,如分组、排序、导入/导出数据等,以提高用户体验和实用性。
总的来说,"一种个人通讯录信息的提取方法"涉及到了数据结构、接口调用、隐私保护、数据转换和应用等多个方面的知识。在实际应用中,开发者需要具备扎实的编程基础,对操作系统和设备API有深入理解,同时,还需要...
本示例项目“iPhone Contact Demo”提供了一个基础的实现方式,帮助开发者理解如何使用AddressBook框架来访问和操作用户的联系人数据。下面将详细介绍这个Demo及其相关知识点。 1. **AddressBook框架**: - ...
### iOS开发教程知识点详解 #### 一、iOS系统架构 iOS系统的实现被设计成由多个层级组成的集合,每个层级提供不同级别的服务和技术。这些层级从底层到顶层分别为:Core OS层、Core Services层、Media层以及Cocoa ...
在iOS中,利用AddressBook框架(iOS 9及更高版本中已被Contacts框架取代)来访问联系人信息。 2. 权限请求:如同短信发送,读取联系人也需要相应权限。在Android上,需要`...
在iOS中,需要使用AddressBook框架。了解这些系统级别的API是必要的。 3. SQL知识:如果联系人信息存储在SQLite数据库中,那么需要熟悉SQL查询语句,用于检索和更新数据。 4. 文件操作:在某些情况下,联系人信息...
这个"通讯录demo"提供了一个基础的框架,让你能够理解并应用到自己的项目中。以下将详细介绍涉及到的关键知识点和步骤。 1. **访问权限**: 在iOS中,访问用户的通讯录需要获取权限。使用`CNContactStore`类,调用...
iOS中的Contacts框架取代了之前的AddressBook框架,用于处理联系人数据。在这个Demo中,开发者使用`CNContactStore`类来获取用户的联系人信息。首先,你需要请求用户授权以访问他们的联系人,通常通过`...