Displaying contacts in UItableview in ordering telephone contacts

I can import contacts from the phone book and display them in a table. But I want them to display the contacts in the same order as in the phone book order .....

can someone help me how to do this and my code is as follows

self.navigationController.navigationBar.tintColor = [UIColor grayColor]; self.title = @"iPhone Contacts"; [super viewDidLoad]; wantedname= [[NSMutableArray alloc] init]; wantednumber= [[NSMutableArray alloc] init]; ABAddressBookRef addressBook = ABAddressBookCreate(); NSArray *thePeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); NSString *name; for (id person in thePeople) { name = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); NSLog(@"!!!!!! name ---> %@",name); ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty); int count1=ABMultiValueGetCount(multi); NSLog(@"%d",count1); if ([name length]>0 && count1!=0) { NSString *beforenumber = (NSString *)ABMultiValueCopyValueAtIndex(multi, 0); NSLog(@" contacts:%@",beforenumber ); NSString* removed1=[beforenumber stringByReplacingOccurrencesOfString:@"-"withString:@""]; NSString* removed2=[removed1 stringByReplacingOccurrencesOfString:@")"withString:@""]; NSString* removed3=[removed2 stringByReplacingOccurrencesOfString:@" "withString:@""]; NSString* removed4=[removed3 stringByReplacingOccurrencesOfString:@"("withString:@""]; NSString* removed5=[removed4 stringByReplacingOccurrencesOfString:@"+"withString:@""]; [wantedname addObject:name]; [wantednumber addObject:removed5]; // CFRelease(beforenumber); [beforenumber release]; //CFRelease(name); } //CFRelease(name); [name release]; CFRelease(multi); } CFRelease(addressBook); CFRelease(thePeople); contactstable.delegate = self; contactstable.dataSource = self; 
+6
source share
2 answers

Instead:

 NSArray *thePeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); 

You may try:

 ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook); NSArray *thePeople = (NSArray*)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByLastName); 
+11
source

Here is how I did it. Hope it helps. :)

 ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); CFMutableArrayRef allPeopleMutable = CFArrayCreateMutableCopy(kCFAllocatorDefault, CFArrayGetCount(allPeople), allPeople); CFArraySortValues(allPeopleMutable, CFRangeMake(0, CFArrayGetCount(allPeopleMutable)), (CFComparatorFunction)ABPersonComparePeopleByName, kABPersonSortByFirstName); 
+1
source

Source: https://habr.com/ru/post/887165/


All Articles