2017-09-26 161 views
0

我必须从他的电话簿访问用户联系人并在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") 

} 

任何人都可以建议我做错了什么。

感谢

+0

'authorizationStatus'的值是什么? – Shebuka

+0

什么是实际授权状态? 'store.requestAccess'方法被调用吗? –

+0

您是否已将必要的密钥添加到Info.plist文件? –

回答

0

请加上这info.plist中

<key>NSContactsUsageDescription</key> 
<string>App users your contacts</string> 
+0

我已添加此密钥 – Chandni

0

这个问题上的模拟器是在设备运作良好,并显示我访问权限弹出了。

非常感谢你们的帮助。

相关问题