2016-05-23 4 views
0

Ist es möglich, eine bestimmte Kontaktinformation oder die Liste der Kontaktinformationen basierend auf dem Namen der Organisation oder der Job-Titel mit Adressbuch und Kontakte-Framework zu holen?Liste von iOS-Kontakten basierend auf dem Namen der Organisation oder des Jobtitels abrufen

+0

Bitte stellen Sie sicher, dass Sie diese Zeilen lesen und versuchen, Ihre Frage zu verbessern: http://stackoverflow.com/help/mcve –

+0

Wenn jemand eine bessere Lösung bekam fügen Sie bitte Ihre Antwort unten –

Antwort

2

Ich glaube nicht, dass Sie die Kontakte aus dem CNContact-Store abrufen können, indem Sie nur den Organisationsnamen oder den Jobtitel im Prädikat angeben. Sie sollten den Organisationsnamen und den Jobtitel in die abzurufenden Schlüssel aufnehmen und dann die Kontaktliste erneut durchlaufen. Überprüfen Sie das Code-Snippet. Ich hoffe, es hilft. Vielen Dank.

func fetchContacts() 
{ 
let contactStore = CNContactStore() 
var allContainers : [CNContainer] = [] 
var allContacts : [CNContact] = [] 

//you can use one of these/ all keys to filter contacts 
let keysToFetch = [CNContactGivenNameKey, CNContactOrganizationNameKey, CNContactJobTitleKey] 
     var OrganizationArray = [CNContact]() 
     do{ 
      // _______________ Fetch all the Containers_________________________________ 
      allContainers = try contactStore.containersMatchingPredicate(nil) 

     } 
     catch{ 
      print(error) 
     } 
     for container in allContainers{ 
      let fetchPredicate = CNContact.predicateForContactsInContainerWithIdentifier(container.identifier) 
      do{ 
       //____________Fetch all the contacts corresponding to every Container______ 
       let containerResults = try contactStore.unifiedContactsMatchingPredicate(fetchPredicate, keysToFetch: keysToFetch) 
       // allContacts.appendContentsOf(containerResults) 


           for contactRec in containerResults { 
            if contactRec.organizationName != "" { 
             OrganizationArray.append(contactRec) 
            } 

           } 

      } 
      catch{ 
       print(error) 
      } 
     } 
} 
+0

Das weiß ich, ich war Ich hoffe, dass es einen anderen Weg gibt, einen bestimmten Kontakt auf der Grundlage eines benutzerdefinierten Labels zu holen, das nicht zu den Namenseigenschaften gehört. Wenn wir dieser Methode folgen, müssen wir alle im Gerät verfügbaren Kontakte durchlaufen, um einen bestimmten Kontakt abzurufen oder zu aktualisieren. –

+0

Soweit ich weiß, können Sie Kontakte basierend auf Kontaktname, Kontakt-ID, Container und Gruppen abrufen. Apple hat keine Vergleichselemente für andere Eigenschaften bereitgestellt. Ich denke, du musst alle Kontakte durchlaufen. – Jush

+0

Sieht so aus, als gäbe es keine Option. –

Verwandte Themen