Search code examples
iosobjective-caddressbook

can't get images for any contact from contact book


Below is my code but with this code i can't get image for any contact. Please help me for this.

- (void)loadAddressBook
{
arrContacts = [[NSMutableArray alloc]init];
APAddressBook *addressBook = [[APAddressBook alloc] init];
[addressBook loadContacts:^(NSArray <APContact *> *contacts, NSError *error)
 {
     if (!error)
     {
         for (APContact *strcontact in contacts)
         {
             NSMutableDictionary *addressDict=[[NSMutableDictionary alloc]init];
             [addressDict setValue:strcontact.name.compositeName forKey:COMPOSITENAME];
             if (strcontact.thumbnail != nil)
             {
                 NSData *imgData = [NSData dataWithData:UIImagePNGRepresentation(strcontact.thumbnail)];
                 // From data to string
                 NSString *strImage = [[NSString alloc] initWithData:imgData encoding:NSUTF8StringEncoding];
                 [addressDict setObject:strImage forKey:IMAGE];
             }else {
                 [addressDict setObject:NOIMAGE forKey:IMAGE];
             }
             for (APPhone *phones in strcontact.phones) {
                 //  NSLog(@"Number %@",phones.number);
                 [addressDict setValue:phones.number forKey:PHONE];
             }
             for (APEmail *emails in strcontact.emails) {
                 //   NSLog(@"Emails %@",emails.address);
                 [addressDict setValue:emails.address forKey:EMAIL];
             }
             for (APAddress *address in strcontact.addresses) {
                 //  NSLog(@"Number %@",phones.number);
                 [addressDict setValue:address forKey:ADDRESS];
             }
             NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
             formatter.dateFormat = @"dd.MM.yyyy";
             NSString *strDate = [formatter stringFromDate:[NSDate date]];
             [addressDict setValue:strDate forKey:IMPORTDATE];
             [arrContacts addObject:addressDict];
         }
         [tblmportContacts reloadData];
     }
     else
     {
         // show error
     }
 }];
}

I am getting all details but can not get images from APAddressBook. Please provide solution for this.


Solution

  • Try code below.

    addressBook.fieldsMask = APContactFieldAll;