Swift - 访问通讯录联系人(使用系统提供的通讯录交互界面)
1,通讯录访问介绍
work、home)。要不然打印出来的是_$!<Home>!$_,_$!<Work>!$_这样的数据。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
import UIKitimport AddressBookUIclass ViewController: UIViewController ,ABPeoplePickerNavigationControllerDelegate{ override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //弹出通讯录联系人选择界面 var picker = ABPeoplePickerNavigationController() picker.peoplePickerDelegate = self self.presentViewController(picker, animated: true) { () -> Void in } } func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!) { //获取姓 var lastName = ABRecordCopyValue(person, kABPersonLastNameProperty).takeRetainedValue() as! String println("选中人的姓:\(lastName)") //获取名 var firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty).takeRetainedValue() as! String println("选中人的名:\(firstName)") //获取电话 var phoneValues:ABMutableMultiValueRef? = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue() if phoneValues != nil { println("选中人电话:") for i in 0 ..< ABMultiValueGetCount(phoneValues){ // 获得标签名 var phoneLabel = ABMultiValueCopyLabelAtIndex(phoneValues, i).takeRetainedValue() as CFStringRef; // 转为本地标签名(能看得懂的标签名,比如work、home) var localizedPhoneLabel = ABAddressBookCopyLocalizedLabel(phoneLabel) .takeRetainedValue() as! String var value = ABMultiValueCopyValueAtIndex(phoneValues, i) var phone = value.takeRetainedValue() as! String println("\(localizedPhoneLabel):\(phone)") } } } func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!, property: ABPropertyID, identifier: ABMultiValueIdentifier) { } //取消按钮点击 func peoplePickerNavigationControllerDidCancel(peoplePicker: ABPeoplePickerNavigationController!) { //去除地址选择界面 peoplePicker.dismissViewControllerAnimated(true, completion: { () -> Void in }) } func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, shouldContinueAfterSelectingPerson person: ABRecord!) -> Bool { return true } func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, shouldContinueAfterSelectingPerson person: ABRecord!, property: ABPropertyID, identifier: ABMultiValueIdentifier) -> Bool { return true }} |
Swift - 访问通讯录联系人(使用系统提供的通讯录交互界面)的更多相关文章
- Swift - 访问通讯录联系人(使用纯代码实现)
1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ...
- Swift - 访问通讯录-使用AddressBook.framework和AddressBookUI.framework框架实现
1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ...
- Android软件开发之获取通讯录联系人信息
Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息拿出来. 这一篇文章我主要带领同学们熟悉Android的通讯录机制. 图中选中 ...
- 向Android模拟器中批量导入通讯录联系人
使用adb命令向Android模拟器中批量导入通讯录联系人的方法: 使用adb提供的命令, 可以非常方便地从PC中将通讯录批量导入android模拟器中. 首先要先准备好固定格式的vcf文件, 该文件 ...
- spring security 一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中 配置的Bean,充分利用了Spring ...
- 如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具
今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只分享一下如何在Windows Server 2008 R2没有磁盘清理工具 ...
- iOS 动态下载系统提供的中文字体
使用系统提供的中文字体,既可避免版权问题,又可以减小应用体积 #pragma mark - 判断字体是否已经被下载 - (BOOL)isFontDownLoaded:(NSString *)fontN ...
- iOS系统提供开发环境下命令行编译工具:xcodebuild
iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...
- Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...
随机推荐
- wiki oi3117 高精度练习之乘法
题目描述 Description 给出两个正整数A和B,计算A*B的值.保证A和B的位数不超过500位. 输入描述 Input Description 读入两个用空格隔开的正整数 输出描述 Outpu ...
- 最小生成树Prim算法
文章作者:甘航 文章来源:http://www.cnblogs.com/ganhang-acm/转载请注明,谢谢合作. 由于数据结构老师布置的一道题 ,我看prim算法看了半天还是一知半解. 在浏览 ...
- 十句话教你学会Linux数据流重定向
1.看到重定向一下子就想起了web里面的redirect,没错,但是Linux数据流重定向的作用不是跳到另一个网页,而是用来存储重要的屏幕信息.将不必要的屏幕信息输出到文件里或者“黑洞”里.将错误信息 ...
- 本地机apache配置基于域名的虚拟主机详解
1.打开apache的httpd.conf文件,找到# Virtual hosts#Include conf/extra/httpd-vhosts.conf这一段把Include conf/extra ...
- iOS中 视频直播功能-流媒体的使用
简单介绍: HLS 协议 : >5M会被AppStore拒绝 服务器要求低 延迟高 多平台 RTMP 协议: 电视直播 PC端使用 配合flash插件 及时性好 ...
- Chapter 10 模版方法模式
我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模版模式来处理. 模版方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模 ...
- Python函数式编程:内置函数reduce 使用说明
一.概述 reduce操作是函数式编程中的重要技术之一,其作用是通过对一个集合的操作,可以从中生成一个值.比如最常见的求和,求最大值.最小值等都是reduce操作的典型例子.python通过内置red ...
- 使用MongoDB的开源项目(转)
根据谷歌的搜索结果筛选出来的. 统计应用 counlty https://count.ly/ mongopress 开源CMS系统 http://www.mongopress.org/ Rubedo ...
- SolrCloud简介
原文地址:http://www.chepoo.com/solrcloud-introduction.html 一.简介 SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布 ...
- 第2次增加ssh 主机信任脚本
dr-mysql01:/root# cat a1.sh #用户名 uname="$1" #密码 passwd="$2" #执行检测并安装expect模块 ep= ...