`
lihao312
  • 浏览: 484037 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IOS基础知识记录九(调用AddressBook地址博信息)

阅读更多
手机访问地址薄

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;
}
0
0
分享到:
评论

相关推荐

    AddressBook

    总的来说,“AddressBook”项目涵盖了iOS应用开发的诸多基础知识,包括UI设计、数据模型、用户交互以及应用间通信。对于初学者来说,这是一个很好的实践项目,可以深入理解iOS开发的各个环节;对于有经验的开发者,...

    IOS应用源码之AddressBookTest.rar

    《深入解析iOS应用源码:AddressBookTest...通过学习和实践AddressBookTest项目,开发者不仅能掌握iOS地址簿框架的使用,还能了解到权限管理、数据操作和UI交互等多个方面的知识,为构建更复杂的iOS应用打下坚实基础。

    ios应用程序之通讯录

    3. **添加联系人**:创建`CNMutableContact`对象,填充联系人信息,然后调用`CNContactStore`的`save(_:to:completionHandler:)`方法将其保存到通讯录。 4. **删除联系人**:找到要删除的联系人`CNContact`对象,...

    iOS 5 Programming中文版第十章

    通过以上知识点的详细介绍,我们可以看到,在iOS 5编程中操作通讯录并非简单的函数调用,而是需要综合考虑权限管理、数据安全以及用户体验等多个方面。对于开发者而言,掌握这些细节不仅有助于构建功能强大的应用,...

    AddressBook通讯录

    通过理解这个项目的实现,开发者可以更好地掌握OC的基础知识,为更复杂的iOS应用开发打下坚实的基础。在实际开发中,还可以考虑添加更多功能,如分组、排序、导入/导出数据等,以提高用户体验和实用性。

    电信设备-一种个人通讯录信息的提取方法.zip

    总的来说,"一种个人通讯录信息的提取方法"涉及到了数据结构、接口调用、隐私保护、数据转换和应用等多个方面的知识。在实际应用中,开发者需要具备扎实的编程基础,对操作系统和设备API有深入理解,同时,还需要...

    iphone contact demo

    本示例项目“iPhone Contact Demo”提供了一个基础的实现方式,帮助开发者理解如何使用AddressBook框架来访问和操作用户的联系人数据。下面将详细介绍这个Demo及其相关知识点。 1. **AddressBook框架**: - ...

    ios开发教程

    ### iOS开发教程知识点详解 #### 一、iOS系统架构 iOS系统的实现被设计成由多个层级组成的集合,每个层级提供不同级别的服务和技术。这些层级从底层到顶层分别为:Core OS层、Core Services层、Media层以及Cocoa ...

    C# mobile手机 发送信息,读取联系人源码

    在iOS中,利用AddressBook框架(iOS 9及更高版本中已被Contacts框架取代)来访问联系人信息。 2. 权限请求:如同短信发送,读取联系人也需要相应权限。在Android上,需要`...

    获得联系人代码

    在iOS中,需要使用AddressBook框架。了解这些系统级别的API是必要的。 3. SQL知识:如果联系人信息存储在SQLite数据库中,那么需要熟悉SQL查询语句,用于检索和更新数据。 4. 文件操作:在某些情况下,联系人信息...

    通讯录demo

    这个"通讯录demo"提供了一个基础的框架,让你能够理解并应用到自己的项目中。以下将详细介绍涉及到的关键知识点和步骤。 1. **访问权限**: 在iOS中,访问用户的通讯录需要获取权限。使用`CNContactStore`类,调用...

    获取联系人功能

    iOS中的Contacts框架取代了之前的AddressBook框架,用于处理联系人数据。在这个Demo中,开发者使用`CNContactStore`类来获取用户的联系人信息。首先,你需要请求用户授权以访问他们的联系人,通常通过`...

Global site tag (gtag.js) - Google Analytics