2012-04-06 18 views
2

Hallo Ich erstelle benutzerdefinierte Adressbuch in diesem ich möchte nur diese Benutzer, die E-Mail-Adresse haben alle Dinge funktionieren perfekt, aber wenn ich versuche, Bild in der Tabelle anzuzeigen, gibt es mir EXCBAD Error. Ich habe Code wie dieseBild vom Adressbuch erhalten und es in NSmutablearray gespeichert, aber während es zeigt, gibt es EXCBAD Fehler in iPhone SDK?

  ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); 
    for (CFIndex i = 0; i < CFArrayGetCount(people); i++) { 
     ABRecordRef person = CFArrayGetValueAtIndex(people, i); 

     ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); 
     for (CFIndex j=0; j < ABMultiValueGetCount(emails); j++) { 

      UIImage *img; 

      if(ABPersonHasImageData(person)) 
      { 
//    img = [UIImage imageWithData:(NSData *)ABPersonCopyImageDataWithFormat(person,kABPersonImageFormatThumbnail)]; 
       img = [UIImage imageWithData:(NSData *)ABPersonCopyImageData(person)]; 
//    if(img != nil) 
//    { 
//     [arrImage addObject:img]; 
//    } 
//    else 
//    { 
        img = [UIImage imageNamed:@"icon-9.png"]; 
        [arrImage addObject:img]; 
//    } 
      }else 
      { 
       img = [UIImage imageNamed:@"icon-9.png"]; 
       [arrImage addObject:img]; 
      } 


      NSString* email = (NSString*)ABMultiValueCopyValueAtIndex(emails, j); 


//   [arrImage addObject:img]; 
      [arrEmail addObject:email]; 

      [img release]; 
      [email release]; 
     } 
     CFRelease(emails); 
    } 
    CFRelease(addressBook); 
    CFRelease(people); 

hier oben Code i Bild und speichert Bild in NSMutableArray ist hole es perfekt gespeichert werden soll. aber wenn ich Bild zeigen, werde im folgenden Code

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UIImageView* imagePhoto; 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableFriends dequeueReusableCellWithIdentifier:CellIdentifier]; 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 

    imagePhoto= [[[UIImageView alloc] initWithFrame:CGRectMake(43.0,10.0,40, 40)] autorelease]; 

    if ([arrEmail count] != 0) 
    { 
     imagePhoto.image = [arrImage objectAtIndex:indexPath.row]; 
     [cell.contentView addSubview:imagePhoto]; 

     cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",[arrEmail objectAtIndex:indexPath.row]]; 
     cell.detailTextLabel.textColor = [UIColor whiteColor]; 


    } 
    return cell; 
} 

es funktioniert perfecly wenn das Bild von hier genannt wird img = [UIImage imageNamed:@"icon.png"]; aber, wenn das Bild aus dem Adressbuch genannt wird, gibt mir Fehler von EXCBAD Error was ist falsch in diesem Code ? Wie kann ich ein Bild in NSMutabeArray speichern und das Bild anzeigen?

hey mir helfen, jede Einrichtung kann mir helfen oder schlagen mich wie Google Latitude in diese implementieren können Sie Freunde von iPhone Adressbuch sehen in hinzufügen Ich möchte nur einige implementieren, was diese Anwendung Funktionalität alle meine Code nur gut funktioniert Ich kann keine Bilder aus dem Adressbuch erhalten, bitte helfen Sie mir.

+0

bitte helfen Sie jedem. –

Antwort

4

ich in einem Objekt von NSMutableDictionary das Bild gespeichert haben, wie diese

personrecord ist die Instanz von

ABRecordRef

Sie bauen das Projekt im ARC-Modus Unter der Annahme.

 
NSData *imgData = (__bridge_transfer NSData *) ABPersonCopyImageDataWithFormat(personrecord, kABPersonImageFormatThumbnail); 

      if (imgData) 
      { 
       UIImage *personImage = [UIImage imageWithData:imgData]; 
       imgData = nil; 
       [dict setValue:personImage forKey:@"UserImage"]; 
      } 
      else 
      { 
       UIImage *personImage = [UIImage imageNamed:@"defalt_contact_img.png"]; 
       [dict setValue:personImage forKey:@"UserImage"]; 
      } 

Sie können den Code manipulieren Ihre Anforderung zu entsprechen, ich bin mit Wörterbuch und Sie verwenden Arrays, so dass Sie die addObject Methode des Arrays verwenden kann, um das Bild zu speichern,

ich ziehe es immer zu bekommen Die Datensätze aus dem Adressbuch in einem veränderbaren Array mit mehreren Wörterbüchern auf diese Weise die Manipulation von Datensätzen wird einfach.

0

Sie müssen prüfen, ob ein Bild vorhanden ist oder nicht.

 
NSData *data = (NSData *)ABPersonCopyImageData(person); 
UIImage *img = [UIImage imageWithData:data]; 

if(img != nil) 
{ 
    // assign the image here 
} 
else 
{ 
    img = [UIImage imageNamed:@"icon.png"]; 
} 

Ich habe nur Ihren Code löschen. Ich denke, das kann helfen.

+0

Ich habe so versucht, aber es gibt mir immer noch denselben Fehler. Kann mir irgendjemand helfen? –

+0

können Sie hier mehr Code einfügen ?? –

+0

jetzt überprüfen, ob etwas, was Sie fragen müssen, als sagen Sie mir. –

2

versuchen zu überprüfen, ob Bild vorhanden ist oder nicht mit

if(ABPersonHasImageData(person)) { 
     UIImage* img = [UIImage imageWithData:(NSData *)ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail)] 
    } 
+0

haben Sie meinen Code Ich habe schon versucht, aber es funktioniert nicht –

0

Sie nicht Bildobjekt direkt an und ein Array hinzufügen können, müssen Sie zuerst das Bild in NSData konvertieren und in Array hinzufügen , während Sie das Bild zeigen, konvertieren Sie die NSdaten in das Bild. Ich hoffe es hilft.

+0

Ich habe viel versucht, wie Sie vorschlagen, aber es gibt mir same.can Sie mir Ihren laufenden Code für dieses Problem ? –