gpt4 book ai didi

ios - 逐部分阅读联系人 (ios)

转载 作者:可可西里 更新时间:2023-11-01 01:57:51 24 4
gpt4 key购买 nike

我已经使用CNContact.framework读取了联系人,如下

let contactStore = CNContactStore()
let keys = [CNContactEmailAddressesKey,
CNContactPhoneNumbersKey,
CNContactFormatter.descriptorForRequiredKeys(for: .fullName),
CNContactThumbnailImageDataKey] as! [CNKeyDescriptor]

// The container means
// that the source the contacts from, such as Exchange and iCloud
var allContainers: [CNContainer] = []
do {
allContainers = try contactStore.containers(matching: nil)

// Loop the containers
for container in allContainers {
let fetchPredicate = CNContact.predicateForContactsInContainer(withIdentifier: container.identifier)
do {
let containerResults = try contactStore.unifiedContacts(matching: fetchPredicate, keysToFetch: keys)

for contact in containerResults {
// iterating over contact
}

print("Saving into core data completed")

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


} catch {
print("Error fetching containers")
}
}

在上面的代码中,我一次读取了所有的联系人。假设我有 10000 个联系人,所有 10K 个联系人将立即加载到内存中。有什么方法可以让我通过提供 offsetlimit 来获取联系人。

假设我想从 0-100 获取联系人,然后是 101-200 ...

提前致谢。

最佳答案

只需调用 enumerateContacts(with:usingBlock:) .它一次给你一个联系人,所以你可以自由地对他们做你想做的事;它为您的 block 提供了一个stop参数,以便您可以随时停止接收联系人。

例如,您可以第一次调用它,读取 100 个联系人,然后停止。然后你第二次调用它,跳过前 100 个联系人(即返回,继续循环),读取接下来的 100 个联系人,然后停止。等等。

关于ios - 逐部分阅读联系人 (ios),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856276/

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