希望实现这样的功能:在应用中导入系统通讯录,依次检测各个联系人是否有地址信息,如果有的话就输出出来
看到有address framework,但是因为没有OC基础,所以不是很明白改怎么调用
求指点
import UIKit
import AddressBook
import AddressBookUI
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var testSwiftContacts:Array = getSysContacts()
if testSwiftContacts.isEmpty {
println("no contact")
}
for contact in testSwiftContacts {
println(contact["FirstName"]!+"·"+contact["LastName"]!)
}
}
}
// SwiftContactTool.swift
import Foundation
import AddressBook
import AddressBookUI
func getSysContacts() -> [[String:String]] {
var error:Unmanaged<CFError>?
var addressBook: ABAddressBookRef? = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue()
let sysAddressBookStatus = ABAddressBookGetAuthorizationStatus()
if sysAddressBookStatus == .Denied || sysAddressBookStatus == .NotDetermined {
// Need to ask for authorization
var authorizedSingal:dispatch_semaphore_t = dispatch_semaphore_create(0)
var askAuthorization:ABAddressBookRequestAccessCompletionHandler = { success, error in
if success {
ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray
dispatch_semaphore_signal(authorizedSingal)
}
}
ABAddressBookRequestAccessWithCompletion(addressBook, askAuthorization)
dispatch_semaphore_wait(authorizedSingal, DISPATCH_TIME_FOREVER)
}
return analyzeSysContacts( ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray )
}
func analyzeSysContacts(sysContacts:NSArray) -> [[String:String]] {
var allContacts:Array = [[String:String]]()
for contact in sysContacts {
var currentContact:Dictionary = [String:String]()
// 姓
currentContact["FirstName"] = ABRecordCopyValue(contact, kABPersonFirstNameProperty)?.takeRetainedValue() as String? ?? ""
// 名
currentContact["LastName"] = ABRecordCopyValue(contact, kABPersonLastNameProperty)?.takeRetainedValue() as String? ?? ""
// 昵称
currentContact["Nikename"] = ABRecordCopyValue(contact, kABPersonNicknameProperty)?.takeRetainedValue() as String? ?? ""
// 公司(组织)
currentContact["Organization"] = ABRecordCopyValue(contact, kABPersonOrganizationProperty)?.takeRetainedValue() as String? ?? ""
// 职位
currentContact["JobTitle"] = ABRecordCopyValue(contact, kABPersonJobTitleProperty)?.takeRetainedValue() as String? ?? ""
// 部门
currentContact["Department"] = ABRecordCopyValue(contact, kABPersonDepartmentProperty)?.takeRetainedValue() as String? ?? ""
//备注
currentContact["Note"] = ABRecordCopyValue(contact, kABPersonNoteProperty)?.takeRetainedValue() as String? ?? ""
allContacts.append(currentContact)
}
return allContacts
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。