Tôi cần lấy số lượng tất cả địa chỉ liên hệ trên thiết bị của người dùng. Thông điệp deprecation trên ABAddressBookGetPersonCount nói: đếmCNContactStore Số lượng hồ sơ liên lạc
sử dụng lấy kết quả cho CNContactFetchRequest với vị ngữ = nil
Dưới đây là những gì tôi đã quyết sau đây hướng dẫn rằng:
__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);
}
Tuy nhiên ngoại hình này khủng khiếp về hiệu suất. Tôi đã không tìm thấy một cách khác để nhận số đếm mà không liệt kê các đối tượng CNContact. Tui bỏ lỡ điều gì vậy?
Cảm ơn bạn trước!
thế nào là mã bất cứ điều gì của bạn như đề nghị trong thông điệp deprecation? – trojanfoe
Có cách nào khác để thực hiện một CNContactFetchRequest không? –