gpt4 book ai didi

ios - 如何使用联系人框架在 iOS 9 中获取所有联系人记录

转载 作者:IT王子 更新时间:2023-10-29 07:31:52 24 4
gpt4 key购买 nike

AddressBook 框架的大部分内容在 iOS 9 中已弃用。在新的联系人框架中 documentation只显示如何获取匹配 NSPredicate 的记录,但如果我想要所有记录怎么办?

最佳答案

其他两个答案都只从具有 defaultContainerIdentifier 的容器中加载联系人。在一种情况下,用户有多个容器(即 Exchange 和 iCloud 帐户都用于存储联系人),这只会从配置为默认的帐户加载联系人。因此,它不会按照问题作者的要求加载所有 联系人。

您可能想要做的是获取所有容器并迭代它们以从每个容器中提取所有联系人。以下代码片段是我们如何在我们的一个应用程序(Swift 中)中执行此操作的示例:

lazy var contacts: [CNContact] = {
let contactStore = CNContactStore()
let keysToFetch = [
CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName),
CNContactEmailAddressesKey,
CNContactPhoneNumbersKey,
CNContactImageDataAvailableKey,
CNContactThumbnailImageDataKey]

// Get all the containers
var allContainers: [CNContainer] = []
do {
allContainers = try contactStore.containersMatchingPredicate(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.predicateForContactsInContainerWithIdentifier(container.identifier)

do {
let containerResults = try contactStore.unifiedContactsMatchingPredicate(fetchPredicate, keysToFetch: keysToFetch)
results.appendContentsOf(containerResults)
} catch {
print("Error fetching results for container")
}
}

return results
}()

关于ios - 如何使用联系人框架在 iOS 9 中获取所有联系人记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32669612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com