2016-05-23 53 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

據我所知,您可以根據聯繫人姓名,聯繫人標識符,容器和組獲取聯繫人。蘋果公司沒有提供其他物業的預測。我認爲你必須遍歷所有的聯繫人。 – Jush

+0

看起來沒有選擇。 –

相關問題