Questions
Questions

Reputation: 20875

Is it possible to retrieve the create time of the iPhone contacts record?

I want to ask a question about iPhone. Is it possible to retrieve the creation time from the iPhone contacts of each record? Thank you.

Upvotes: 1

Views: 1199

Answers (2)

Thomas
Thomas

Reputation: 1468

For iOS6+ it's a bit different:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

/* -> I left out the ask for permission code here */

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, nil);

if (addressBook != nil)
{        
    NSArray *allPeople = (__bridge_transfer NSArray
                            *)ABAddressBookCopyArrayOfAllPeople(addressBook);

    for( id contactPerson in allPeople )
    {
        NSString *firstName = (__bridge_transfer NSString
                               *)ABRecordCopyValue((__bridge ABRecordRef)(contactPerson), kABPersonFirstNameProperty);

        NSDate* createDate = (__bridge_transfer NSDate*) ABRecordCopyValue((__bridge ABRecordRef)(contactPerson), kABPersonCreationDateProperty );
        NSString* formattedDate = [dateFormatter stringFromDate:createDate];

        NSLog( @"%@ created %@", firstName, formattedDate );
    }
}

CFRelease(addressBook);

Upvotes: 0

zpasternack
zpasternack

Reputation: 17898

Yes. You want the kABPersonCreationDateProperty. See the reference.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];    

ABAddressBookRef addressBook = ABAddressBookCreate();

NSArray* allPeople = (NSArray*) ABAddressBookCopyArrayOfAllPeople( addressBook );
for( id aPerson in allPeople ) {
    NSString* firstName = (NSString*) ABRecordCopyValue( aPerson, kABPersonFirstNameProperty );
    NSString* lastName = (NSString* ) ABRecordCopyValue( aPerson, kABPersonLastNameProperty );
    NSDate* createDate = (NSDate*) ABRecordCopyValue( aPerson, kABPersonCreationDateProperty );
    NSString* formattedDate = [dateFormatter stringFromDate:createDate];

    NSLog( @"%@ %@ created %@", firstName, lastName, formattedDate );

    [firstName release];
    [lastName release];
    [createDate release];
}

[allPeople release];
[dateFormatter release];
CFRelease(addressBook);

Which outputs...

AddressBookTest[6202:207] Zacharias Pasternack created 9/24/10 9:03:34 AM PDT
AddressBookTest[6202:207] Some Other Guy created 9/24/10 9:07:18 AM PDT

Upvotes: 4

Related Questions