2016-05-23 13 views
0

AddressBookと連絡先フレームワークの両方を使用して、特定の連絡先情報または連絡先情報のリストを組織名または職種に基づいて取得できますか?組織名または求人情報に基づいてiOS連絡先のリストを取得

+0

あなたがこれを読んで、あなたの質問を改善しようとすることを確認してください:http://stackoverflow.com/help/mcve –

+0

いずれかがよりよい解決策を得た場合、私は知っている –

答えて

2

CNContactストアから連絡先を取得するには、組織名や役職を述語で指定するだけでよいとは思いません。フェッチした後、連絡先リストを再度反復するために、組織名と役職をキーに含める必要があります。コードスニペットを確認してください。私はそれが助けて欲しいありがとう。

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

この下にあなたの答えを追加してください、私がされました名前のプロパティ以外のカスタムラベルに基づいて特定の連絡先をフェッチする方法がいくつかあります。このメソッドに従えば、特定の連絡先を取得または更新するためにデバイスで使用可能なすべての連絡先を反復処理する必要があります。 –

+0

私が知る限り、連絡先名、連絡先ID、コンテナおよびグループに基づいて連絡先を取得できます。 Appleは他のプロパティの述語を提供していません。私はあなたがすべての連絡先を反復しなければならないと思う。 – Jush

+0

オプションがないように見えます。 –

関連する問題