2012-04-06 10 views
2

こんにちは私はカスタムアドレス帳を作成しています。私は電子メールアドレスを持っているすべての人が完璧に動作するようにしたいのですが、テーブルビューで画像を表示しようとすると、EXCBAD Errorが表示されます。私は完全に保存されようとしているNSMutableArrayの中に画像や店舗のイメージをフェッチしています上記のコードでは、ここでこのアドレス帳から画像を取得してNSmutablearrayに保存しましたが、表示中にiphone sdkで `EXCBAD Error`と表示されましたか?

  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); 

のようなコードを持っています。私はイメージがここimg = [UIImage imageNamed:@"icon.png"];しかしから呼び出されたときに、以下のコード

-(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; 
} 

それはperfecly作品で画像を表示しようと思ったときに画像がアドレス帳から呼び出されたとき、それは私にそのコードでいただきました!間違ったEXCBAD Errorの誤差を与えます?どのようにNSMutabeArrayに画像を保存し、画像を表示できますか?

ちょっとすべてのボディが私を助けたり、私はちょうど私のすべてのコードが良いだけ働いているこのアプリケーションの機能のようなものをいくつかを実装したいiPhoneのアドレス帳から友人を追加で見ることができ、この中Google Latitude のように実装するために私を提案することができ、私を助けてアドレス帳から画像を取得できません...

+0

誰かを助けてください。 –

答えて

4

この

PersonRecordをあなたはARCモードでプロジェクトを構築していると仮定すると、

ABRecordRef

のインスタンスであるように私はNSMutableDictionaryのオブジェクトに画像を保存しています。

 
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"]; 
      } 

あなたはあなたの要件に合わせてコードを操作することができる、私は辞書を使用していますし、そこに画像を保存するために、アレイのAddObjectメソッドを使用することができますので、あなたは配列を使用している、

私は常に取得することを好みますこのように複数の辞書を持つ可変配列のアドレス帳からのレコードは、レコードの操作が容易になります。

0

画像の有無を確認する必要があります。

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

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

私はあなたのコードをクリアしています。私はこれが助けるかもしれないと思う。画像が利用可能であるか

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

私はこれを試しましたが、それでも私には同じエラーが出ます。誰も私を助けることができますか? –

+0

ここにコードを貼り付けることはできますか? –

+0

は、あなたが尋ねる必要があるものがあるかどうかを今すぐチェックします。 –

2

は、あなたが最初のNSDataに画像を変換し、配列に追加する必要がありますチェックしてみてください画像を表示している間にNSdataを画像に変換します。それが役に立てば幸い。

+0

私のコードを見たことがありますが、これはすでに試してみましたが、動作していません –

0
あなたに直接、画像オブジェクトを追加することはできません

と配列を使用していない場合は

+0

私はあなたが示唆したようにたくさん試しましたが、 ? –

関連する問題