无法在 iOS 12.4.1 (iPhone XR) 中使用 CNContactStore 获取联系人。即使在 13 beta 或 12.4.1 以下也能正常工作

Unable to fetch contacts using CNContactStore in iOS 12.4.1 (iPhone XR). Works well in even 13 beta or below 12.4.1

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

下面是我的代码。

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 以下和 iOS13 所有测试版。现在我正在 iPhone XR 中测试它。

我在未进行任何 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{

            }

        }