求人不若求己——用Swift访问iOS系统通讯录

之所以起这么个题目——求人不若求己,实在是有感而发。不管是论坛、问答网站、QQ群,还是各路视频教程,“怎么用Swift访问系统通讯录”这个问题,我问了n遍,n遍石沉大海……

后来在国外的网站上终于找到了几个关键地方相关的问题,才终于突破了这个现在看来不怎么算得上瓶颈的问题。

其实也难怪,现在大部分用Swift的程序员,原本就很熟悉iOS开发,从OC迁移到Swift只是语法和语言特性上的变化。而对于我这样的菜鸟,连框架怎么引入都不会……虽然有热心老鸟的指点,但是依然快要疯掉了。

尝试一天,试了三种方法:直接桥接现成的类库;写一个简单的OC类库,不同在于不用OC解析数据,而在相对熟悉的Swift种进一步解析;以及最后用Swift重写所有语句,打包成方法,直接调用。

最终写完的SwiftContactTool:

输出示例:

_$!<Home>!$_Phone: 555-610-6679
FirstName: David
FirstNamePhonetic:
_$!<Home>!$_Address_Contrycode: us
Department:
_$!<Home>!$_Address_City: Tiburon
_$!<Home>!$_Address_State: CA
_$!<Home>!$_Address_Country: USA
Note: Plays on Cole’s Little League Baseball Team

twitter_SNS_URL: http://twitter.com/aaaaa
LirstNamePhonetic:
Organization:
Nikename:
_$!<Home>!$_Address_Street: 1747 Steuart Street
LastName: Taylor
JobTitle:
twitter_SNS_Serves: twitter
twitter_SNS_Username: aaaaa
_$!<HomePage>!$_URL: www.net.com
_$!<Anniversary>!$_Date: 2011-12-05 12:00:00 +0000
———

PS. 无论用哪种方法,在Swift下,ViewDidLoad函数中请求通讯录访问权限时,对话框总是被遮挡在加载界面之后,进程如果等待请求结果,应用就会卡在加载界面上;而要是不设置等待,首次启动就跳过了加载通讯录内容的过程…… 暂时,这大概会一直是个无解的问题咯……

“求人不若求己——用Swift访问iOS系统通讯录”的3个回复

    1. 是的咯,这是1.2时代搞的,但是迁移到2.0应该不会太困难吧,3.0因为系统API调用方法变化了可能迁移起来比较麻烦

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.