我必须从他的电话簿访问用户联系人并在skstableview中显示它。 为了得到接触,并将其显示在tableview中我使用下面的代码,但没有它不要求访问联系人权限也越来越联系人和控制台上打印着这样一句话:不要求获取用户地址簿中联系人的权限
“拒绝访问”的UserInfo = {NSLocalizedDescription =访问拒绝,NSLocalizedFailureReason =此应用程序未被授予访问联系人的权限。}
我已经在plist文件中完成了访问联系人的条目,但没有任何内容适用于我。
这是我在Xcode 8.3.3 swift中使用的代码片段。
func getContacts() {
let store = CNContactStore()
if CNContactStore.authorizationStatus(for: .contacts) == .notDetermined {
store.requestAccess(for: .contacts){succeeded, err in
guard err == nil && succeeded else{
return
}
self.contactList()
}
} else if CNContactStore.authorizationStatus(for: .contacts) == .authorized {
self.contactList()
NSLog(" move to contact list ")
}
}
func contactList() {
let req = CNContactFetchRequest(keysToFetch: [
CNContactFamilyNameKey as CNKeyDescriptor,
CNContactGivenNameKey as CNKeyDescriptor,
CNContactPhoneNumbersKey as CNKeyDescriptor
])
arr_contacts.removeAllObjects()
try! CNContactStore().enumerateContacts(with: req) {
contact, stop in
print("contacts \(contact)") // in real life, probably populate an array
self.arr_contacts.add(contact)
}
tbl_List.reloadData()
print("added all contacts")
}
任何人都可以建议我做错了什么。
感谢
'authorizationStatus'的值是什么? – Shebuka
什么是实际授权状态? 'store.requestAccess'方法被调用吗? –
您是否已将必要的密钥添加到Info.plist文件? –