簡體   English   中英

CNContacts無法從聯系人列表中獲取所有聯系人

[英]CNContacts not fetching all the contacts from contacts list

CNContacts無法從聯系人列表中提取所有聯系人。 一些聯系人丟失了。 誰能幫忙。

這是我的代碼。

    let key = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey] as [CNKeyDescriptor]
    let request = CNContactFetchRequest(keysToFetch: key)
    try! contactStore.enumerateContacts(with: request) { (contact, stoppingPointer) in
        let givenName = contact.givenName
        let familyName = contact.familyName
        print(contact.phoneNumbers[0].label!)
        var number = [contact.phoneNumbers[0].value.stringValue]
        var type = [contact.phoneNumbers[0].label]
        if contact.phoneNumbers.count > 1{
            for i in 1...contact.phoneNumbers.count - 1{
                number.append(contact.phoneNumbers[i].value.stringValue)
                type.append(contact.phoneNumbers[i].label)
            }
        }
        let imagedata = contact.imageData
        let contactToAppend = ContactStruct(givenName: givenName, familyName: familyName, number: number, type: type as! [String] , image: imagedata)
        self.contacts.append(contactToAppend)
    }

請嘗試以下代碼,希望它能起作用。

func getContactList() {

  let contacts = self.getContactFromCNContact()

  for contact in contacts {

     //do your stuff with contact
  }
}

func getContactFromCNContact() -> [CNContact] {

    let contactStore = CNContactStore()
    let keysToFetch = [
        CNContactFormatter.descriptorForRequiredKeys(for: .fullName),
        CNContactIdentifierKey,
        CNContactNamePrefixKey,
        CNContactGivenNameKey,
        CNContactMiddleNameKey,
        CNContactFamilyNameKey,
        CNContactPreviousFamilyNameKey,
        CNContactNameSuffixKey,
        CNContactNicknameKey,
        CNContactOrganizationNameKey,
        CNContactDepartmentNameKey,
        CNContactJobTitleKey,
        CNContactPhoneticGivenNameKey,
        CNContactPhoneticMiddleNameKey,
        CNContactPhoneticFamilyNameKey,
        CNContactBirthdayKey,
        CNContactNonGregorianBirthdayKey,
        CNContactNoteKey,
        CNContactImageDataKey,
        CNContactThumbnailImageDataKey,
        CNContactImageDataAvailableKey,
        CNContactTypeKey,
        CNContactPhoneNumbersKey,
        CNContactEmailAddressesKey,
        CNContactPostalAddressesKey,
        CNContactDatesKey,
        CNContactUrlAddressesKey,
        CNContactRelationsKey,
        CNContactSocialProfilesKey,
        CNContactInstantMessageAddressesKey] as [Any]

    //Get all the containers
    var allContainers: [CNContainer] = []
    do {
        allContainers = try contactStore.containers(matching: nil)
    } catch {
        print("Error fetching containers")
    }

    var results: [CNContact] = []

    // Iterate all containers and append their contacts to our results array
    for container in allContainers {

        let fetchPredicate = CNContact.predicateForContactsInContainer(withIdentifier: container.identifier)

        do {
            let containerResults = try contactStore.unifiedContacts(matching: fetchPredicate, keysToFetch: keysToFetch as! [CNKeyDescriptor])
            results.append(contentsOf: containerResults)

        } catch {
            print("Error fetching results for container")
        }
    }

    return results
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM