IOS 官方知识点案例: Address Book 之一:快速入门

介绍
    人们的联系信息和其它个人信息存储在一个集中的数据库中,ios的Address Book 技术就是用来在各个应用中分享这些信息的。这项技术有下面几个部分:
    1.提供了访问联系方式信息
    2.Address Book UI 框架提供了用户界面来展示这些信息
    3.Address Book 数据库存储了这些数据

    4.联系应用(通讯录)提供了一种方法来访问它们的联系方式信息

    这篇文章包含了Address Book 技术一些关键的概念并且讲解了你能做的一些基本操作。当你在你的应用添加了这项技术后,用户将可以在使用其它app时访问你的联系信息,比如 你应用里的邮件和文本。你将可以做到以下几点:
    1.访问用户Address Book 数据库
    2.提示用户一些联系信息
    3.给用户展示联系信息
    4.改变用户Address Book 数据
    为了让你能够彻底理解这个文档,你应该掌握导航控制器和视图控制器(view controllee),理解代理和协议
    注意:在iOS和mac上使用这项技术显示出来的界面是不同的

快速入门教程
    目的:创建一个应用,让用户从他的通讯录种选择一个人来展示这个人的姓名和电话
    1.当然是创建项目啦,选择single View ,并且还要导入Address Book UI 和Address Book 框架到你项目里哦,看不懂的留言

    2.搭建UI,这个随便


    3.接下来是代码:

#import "ViewController.h"
#import <AddressBookUI/AddressBookUI.h>

@interface ViewController ()<ABPeoplePickerNavigationControllerDelegate>// Address Book 代理
- (IBAction)showPicker:(id)sender; // 按钮方法
@property (weak, nonatomic) IBOutlet UILabel *xingming; // 姓名
@property (weak, nonatomic) IBOutlet UILabel *shouji; // 手机号码

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (IBAction)showPicker:(id)sender {
    // 创建选人的控制器
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    // 设置代理
    picker.peoplePickerDelegate = self;
    // 通过modal方式展示控制器
    [self presentModalViewController:picker animated:YES];
}

// 点击取消时调用
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

// 点击时调用
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person
{
    [self displayPerson:person];
    [self dismissViewControllerAnimated:YES completion:nil];
}

// 展示个人信息
- (void)displayPerson:(ABRecordRef)person
{
    // 获取姓名,__bridge_transfer是自动转换后后面会自动release
    NSString *name = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
    self.xingming.text = name;
    
    // 手机
    NSString *phone = nil;
    ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);
    if(ABMultiValueGetCount(phoneNumbers)){
        phone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
    }else{
        phone = @"没有电话";
    }
    self.shouji.text = phone;
    CFRelease(phoneNumbers);
}
   4.选择第一个效果图

总结:很少写这些东东,比较粗糙,大家不要咬文嚼字,重在理解,关于上面的一些简介属本人的一些硬翻译,水平有限,请多多包涵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值