1

我正在获取联系人并使用我的自定义 UI 显示它。我面临一个奇怪的问题,CNContactStore 类没有给我联系人,它返回一个空数组。

下面是我的代码。

let contactStore = CNContactStore()

let keysToFetch = [
        CNContactFormatter.descriptorForRequiredKeys(for: .fullName),
        CNContactGivenNameKey,
        CNContactMiddleNameKey,
        CNContactFamilyNameKey,
        CNContactPhoneNumbersKey
        ] as [Any]

    //Get all the containers
    var allContainers: [CNContainer] = []
    do {
        allContainers = try contactStore.containers(matching: nil)

    } catch let errorToShow{

        //Handling error
    }

我的代码适用于 12.4.1 以下和 iOS 13 所有 beta 版本。现在我正在 iPhone XR 上测试它。

4

1 回答 1

0

我在没有做任何 info.plist 更改的情况下尝试了下面的代码,它在 iOS 13 及更低版本中运行良好。(从 iOS 13 开始,我们需要在 plist 中添加密钥才能访问注意,就我而言,我不想这样做)。

 if let keysToFetch = [
            CNContactFormatter.descriptorForRequiredKeys(for: .fullName),CNContactGivenNameKey, CNContactMiddleNameKey,
            CNContactFamilyNameKey,CNContactPhoneNumbersKey] as? [CNKeyDescriptor]{

            let request = CNContactFetchRequest(keysToFetch: keysToFetch)
            do {
                try contactStore.enumerateContacts(with: request){
                    (cont, stop) in
                    // Array containing all unified contacts from everywhere

                }

            } catch let errorToShow{

            }

        }
于 2019-10-09T11:06:31.323 回答