【发布时间】:2016-04-18 13:34:53
【问题描述】:
我需要获取用户设备上所有联系人的数量。 ABAddressBookGetPersonCount 上的弃用消息说:
对 CNContactFetchRequest 使用 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 对象的情况下,我还没有找到另一种获取计数的方法。我错过了什么吗?
提前谢谢你!
【问题讨论】:
-
您的代码与弃用消息中的建议有何相似之处?
-
还有其他方法可以执行 CNContactFetchRequest 吗?
标签: ios cncontact cncontactstore