gpt4 book ai didi

ios - CNContactStore 联系人记录数

转载 作者:可可西里 更新时间:2023-11-01 03:56:41 25 4
gpt4 key购买 nike

我需要获取用户设备上所有联系人的数量。 ABAddressBookGetPersonCount 上的弃用消息说:

use count of fetch results for CNContactFetchRequest with predicate = nil

以下是我按照该指南编写的内容:

 __block NSUInteger contactsCount = 0;

NSError *error;
CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[CNContactGivenNameKey]];
BOOL success = [self.contactStore enumerateContactsWithFetchRequest:request error:&error
usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
contactsCount += 1;
}];
if (!success || error) {
NSLog(@"error counting all contacts, error - %@", error.localizedDescription);
}

然而,就性能而言,这看起来很糟糕。我还没有找到另一种无需枚举 CNContact 对象即可获得计数的方法。我错过了什么吗?

提前致谢!

最佳答案

这是旧的,但如果其他人偶然发现它,可以通过使用 0 个键而不是 1 个键进行枚举来完成。

__block NSUInteger contactsCount = 0;

NSError *error;
CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[]];
BOOL success = [self.contactStore enumerateContactsWithFetchRequest:request error:&error
usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
contactsCount += 1;
}];
if (!success || error) {
NSLog(@"error counting all contacts, error - %@", error.localizedDescription);
}

使用 0 个键,我能够在 0.8 秒内在具有 10,000 个联系人的设备上运行计数(而使用 1 个键需要 14 秒)。

关于ios - CNContactStore 联系人记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36695582/

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