获取所有用户的联系电话号码Swift3 / iOS9 +

时间:2017-02-13 19:06:26

标签: swift swift3 cncontact cncontactstore

我发现的大部分内容都是使用AddressBook而不是新的Contacts。我正在尝试将所有用户联系人的姓名和电话号码显示在应用程序的tableview中。然后将所有这些数字带入一个API,该API交叉引用是否已经有任何帐户,因此我可以在那些旁边显示“添加朋友”按钮。是否有一种快速简便的方法来请求权限,然后使用Swift3将所有联系人放入一个数组并与iOS9和更新版本兼容?

我不想找到或添加联系人,我只想要数组中的所有数字和名称

1 个答案:

答案 0 :(得分:10)

下面的两个片段应该会有所帮助。我已经双重声明了商店,如果您在同一范围内使用两个片段,则不需要这样做...

获得许可:

    let store = CNContactStore()
    store.requestAccess(for: .contacts) { (isGranted, error) in
        // Check the isGranted flag and proceed if true
    }

阅读地址簿(我随机包含了一些键,但您可以选择适用于您的任何键。):

    let contactStore = CNContactStore()
    let keys = [CNContactPhoneNumbersKey, CNContactFamilyNameKey, CNContactGivenNameKey, CNContactNicknameKey, CNContactPhoneNumbersKey]
    let request1 = CNContactFetchRequest(keysToFetch: keys  as [CNKeyDescriptor])

    try? contactStore.enumerateContacts(with: request1) { (contact, error) in
        for phone in contact.phoneNumbers {
            // Whatever you want to do with it
        }
    }