2017-09-26 163 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

這個問題上的模擬器是在設備運作良好,並顯示我訪問權限彈出了。

非常感謝你們的幫助。

相關問題