Мне нужно получить количество всех контактов на устройстве пользователя. В сообщении об устаревании ABAddressBookGetPersonCount говорится:
использовать количество результатов выборки для CNContactFetchRequest с предикатом = 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. Я что-то упускаю?
Заранее спасибо!