2017-03-29 4 views
0

Je veux obtenir la liste de tous les contacts du téléphone avec leur nom ainsi que les numéros de téléphone dans swift 3.0 et xcode 8.0. ci-dessous est le codeCNPropertyNotFetchedException App Crashed

func get_all_user_contacts() 
{ 
    let status = CNContactStore.authorizationStatus(for: .contacts) 
    if status == .denied || status == .restricted 
    { 
     presentSettingsActionSheet() 
     return 
    } 

    // open it 

    let store = CNContactStore() 
    store.requestAccess(for: .contacts) { granted, error in 
     guard granted else 
     { 
      DispatchQueue.main.async { 
       self.presentSettingsActionSheet() 
      } 
      return 
     } 

     // get the contacts 

     var contacts = [CNContact]() 

     let request = CNContactFetchRequest(keysToFetch: [CNContactIdentifierKey as NSString, CNContactFormatter.descriptorForRequiredKeys(for: .fullName)]) 
     do 
     { 
      try store.enumerateContacts(with: request) 
      { contact, stop in 


       contacts.append(contact) 
      } 
     } 
     catch 
     { 
      print(error) 
     } 

     // do something with the contacts array (e.g. print the names) 

     let formatter = CNContactFormatter() 
     formatter.style = .fullName 
     for contact in contacts 
     { 
      let MobNumVar = ((contact.phoneNumbers.first?.value)! as CNPhoneNumber).stringValue 
      print(MobNumVar) 
      print(formatter.string(from: contact) ?? "???") 
     } 
    } 
} 

quand je lance cette application, il se bloque et je ne sais pas où je reçois mal. tout le monde peut m'aider .. ce sera apprécié.

+0

Où est-il le temps? Quel message obtenez-vous? –

Répondre

0

Vous vous demandez les clés

• CNContactIdentifierKey 
• CNContactFormatter.descriptorForRequiredKeys(for: .fullName) 

... mais alors vous essayez d'accéder contact.phoneNumber.

Vous ne pouvez les clés d'accès spécifié dans keysToFetch, vous devez donc ajouter à ce tableau CNContactPhoneNumbersKey

+0

oui. Tu as raison. mais pouvez-vous m'aider plus que comment je peux ajouter cela à un tableau. ??? un morceau de code .. thnx –

+0

cela fonctionne. j'ai ajouté: CNContactPhoneNumbersKey comme CNKeyDescriptor –