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