Search code examples
ioscontactsimport-contacts

Storing Contact list in NSMutableArray


I'm using this code to get the contact list and then I want to store the contact list into an array, alright just the first name if I get how to add the all the first name then I'll go ahead and other properties also.

- (void)viewDidLoad {
    // Implement viewDidLoad if you need to do additional setup after loading the view.
    [super viewDidLoad];

    ABAddressBookRef addressBook = ABAddressBookCreate(); // create address book reference object
    NSArray *abContactArray = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); // get address book contact array

    NSInteger totalContacts =[abContactArray count];

    for(NSUInteger loop= 0 ; loop < totalContacts; loop++)
    {
        ABRecordRef record = (ABRecordRef)[abContactArray objectAtIndex:loop]; // get address book record
        // NSLog(@"%@,%@,%@",recordIdString,firstNameString,lastNameString);

        [myarray addObject:firstNameString];
        NSLog(@"%@",[myarray objectAtIndex:1]);

        if(ABRecordGetRecordType(record) ==  kABPersonType) // this check execute if it is person group
        {
            ABRecordID recordId = ABRecordGetRecordID(record); // get record id from address book record

            recordIdString = [NSString stringWithFormat:@"%d",recordId]; // get record id string from record id

            firstNameString = (NSString*)ABRecordCopyValue(record,kABPersonFirstNameProperty); // fetch contact first name from address book  
            lastNameString = (NSString*)ABRecordCopyValue(record,kABPersonLastNameProperty); // fetch contact last name from address book
            //NSLog(@"%@,%@,%@",recordIdString,firstNameString,lastNameString);
        }
    }
}

myarray is the object created NSMutableArray *myarray in .h class.

Any help will be greatly appreciated. Thank you.


Solution

  • Try this:

    ABAddressBookRef addressBook = ABAddressBookCreate();
    NSArray *arrayOfPeople = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);    
    
    //The array in which the first names will be stored as NSStrings
    NSMutableArray *firstNames = [[NSMutableArray alloc] init];
    
    for(NSUInteger index = 0; index <= ([arrayOfPeople count]-1); index++){
    
        ABRecordRef currentPerson = (__bridge ABRecordRef)[arrayOfPeople objectAtIndex:index];    
        NSString *currentFirstName = (__bridge_transfer NSString *)ABRecordCopyValue(currentPerson, kABPersonFirstNameProperty);
        [firstNames addObject: currentFirstName];
    }
    
    //OPTIONAL: The following line sorts the first names alphabetically
    NSArray *sortedFirstNames = [firstNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
    

    I tested this and it works. If you have any problems with the code just add a comment and I'll try to help.