Recuperar contactos orderados por date modificada iOS

¿Cómo puedo recuperar todos los contactos de la libreta de direcciones que están orderados según su date de modificación? es decir, el contacto con la última date de modificación debe aparecer antes en la list.

Como no hay forma de orderar directamente según la date de modificación de ABPerson aquí hay algo que creo que funciona

- (NSArray *) getSortedContacts { NSMutableArray * modificationDates = [[NSMutableArray alloc] init]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; ABAddressBookRef addressBook = ABAddressBookCreate(); if(addressBook != nil) { CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); if(nPeople > 0) { CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); for (int index = 0; index < nPeople; ++index) { ABRecordRef person = CFArrayGetValueAtIndex(allPeople, index); NSNumber *contactID = [NSNumber numberWithInt:ABRecordGetRecordID(person)]; NSDate *modificationDate = (NSDate*) ABRecordCopyValue(person, kABPersonModificationDateProperty); [modificationDates addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:contactID,modificationDate, nil] forKeys:[NSArray arrayWithObjects:@"contactID",@"modificationDate", nil]]]; } if(allPeople) CFRelease(allPeople); allPeople = nil; } } [pool drain]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"modificationDate" ascending:TRUE]; [modificationDates sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; return modificationDates; } 

cuando obtenga la matriz orderada, obtenga el dictionary de la matriz y use el ID de contacto y utilícelo para get el object ABPerson usando esta

 ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressbook, (ABRecordID) [[dict valueForKey:@"contactID"] intValue]); 

Espero que esto te ayudará

Use la propiedad kABPersonModificationDateProperty del logging de ABPerson.

 CFDateRef modDate = ABRecordCopyValue(record, kABPersonModificationDateProperty); 

Te da la date modificada.

    Intereting Posts