ユーザーのデバイス上のすべての連絡先の数を取得する必要があります。ABAddressBookGetPersonCount の非推奨メッセージには次のように記載されています。
predicate = nil の CNContactFetchRequest のフェッチ結果のカウントを使用する
そのガイダンスに従って私が作ったものは次のとおりです。
__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 オブジェクトを列挙せずにカウントを取得する別の方法は見つかりませんでした。何か不足していますか?
前もって感謝します!