从通讯簿获取图像并将其存储到NSmutablearray,但在显示图像时会在iphone sdk中出现“EXCBAD Error”?

从通讯簿获取图像并将其存储到NSmutablearray,但在显示图像时会在iphone sdk中出现“EXCBAD Error”?,iphone,abaddressbook,abpeoplepickerview,Iphone,Abaddressbook,Abpeoplepickerview,您好,我正在为此创建自定义通讯簿。我只想让拥有电子邮件地址的用户所有功能都能正常工作,但当我尝试在tableview中显示图像时,会出现EXCBAD错误。我有这样的代码 ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); for (CFIndex i = 0; i <

您好,我正在为此创建自定义通讯簿。我只想让拥有电子邮件地址的用户所有功能都能正常工作,但当我尝试在tableview中显示图像时,会出现
EXCBAD错误
。我有这样的代码

            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 ImageName:@“icon.png”]但是当从通讯簿调用图像时,它给我的错误是
EXCBAD error
该代码有什么错误?如何在NSMutabeArray中存储图像并显示图像

嘿,帮帮我任何人都可以帮我或建议我实施
在这里,您可以看到从iPhone通讯簿添加好友我只想实现一些类似此应用程序的功能我的所有代码都工作正常,只是我无法从通讯簿获取图像请帮助我….

您需要检查是否有图像可用

NSData *data = (NSData *)ABPersonCopyImageData(person); UIImage *img = [UIImage imageWithData:data]; if(img != nil) { // assign the image here } else { img = [UIImage imageNamed:@"icon.png"]; } NSData*数据=(NSData*)ABPersonCopyImageData(个人); UIImage*img=[UIImage-imageWithData:data]; 如果(img!=nil) { //在此处指定图像 } 其他的 { img=[UIImage ImageName:@“icon.png”]; }
我刚刚清除了你的代码。我想这可能会有帮助。

尝试检查图像是否可用或未使用


不能将图像对象直接添加到和数组中,需要先在NSData和add-in数组中转换图像,然后在显示图像时将NSData转换为图像。希望有帮助。

我已将图像存储在NSMutableDictionary的对象中,如下所示

personrecord是ABRecordRef的实例

ABRecordRef 假设您正在ARC模式下构建项目

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"]; } NSData*imgData=(\u桥接\u传输NSData*)ABPersonCopyImageDataWithFormat(personrecord,KabPersonImageFormat缩略图); if(imgData) { UIImage*personImage=[UIImage-imageWithData:imgData]; imgData=零; [dict setValue:personImage forKey:@“UserImage”]; } 其他的 { UIImage*personImage=[UIImage ImageName:@“defalt_contact_img.png”]; [dict setValue:personImage forKey:@“UserImage”]; } 您可以根据自己的需要操作代码,我使用字典,您使用数组,因此您可以使用数组的addObject方法来存储图像


我总是喜欢从地址簿中获取具有多个字典的可变数组中的记录,这样操作记录变得很容易。

我尝试过这样做,但仍然会出现相同的错误。有人能帮我吗?试试这个CFDataRef imageData=ABPersonCopyImageData(person);如果(imageData!=nil){UIImage*image=UIImage-imageWithData:(NSData*)imageData;}我已经这样使用过,但仍然会给出错误。我又一次尝试了这段代码,你看到我的代码了吗?我已经尝试过了,但它不起作用。我已经按照你的建议尝试了很多次,但它给了我同样的效果。你能给我发一下你针对这个问题的运行代码吗? ABRecordRef 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"]; }