试图检索图像 - 获取EXC_BAD_ACCESS错误

时间:2012-01-15 12:25:07

标签: ios image cell tableview

我使用UserDefaults将图片保存到NSData,现在希望在tableview单元格中检索它。

以下是我在TableView.m

的ViewDidLoad中添加的内容
NSData *imageData;
imageData = [NSKeyedArchiver archivedDataWithRootObject:yourUIImage];
[[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"image"];

这就是我在TableView cellforRowatIndex中放入的内容

cell.imageView.image = [UIImage imageWithData:@"bild"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

然而,当我启动程序时,我在cell.imageView.image行中得到一个EXC_BAD_ACCESS错误以及“不兼容的指针类型发送”NSString *“到”NSData *“类型的参数”

以下是我首先保存图像的方法:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"image"] == nil) { 
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:picker animated:YES];

    NSData *imageData;
    UIImage *yourUIImage;
    imageData = [NSKeyedArchiver archivedDataWithRootObject:yourUIImage];
    [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"image"];

2 个答案:

答案 0 :(得分:2)

使用NSKeyedUnarchiver作为NSKeyedArchiver的副本,如下所示:

NSData *imageData = [[NSUserDefaults standardUserDefaults] dataForKey: @"image"];
cell.imageView.image = [NSKeyedUnarchiver unarchiveObjectWithData: imageData];

答案 1 :(得分:1)

错误讯息:
“不兼容的指针类型向”NSData *“类型的参数发送”NSString *“
提供NSString作为参数而不是NSData。
查看方法调用行:

cell.imageView.image = [UIImage imageWithData:@"bild"];

参数是NSString:@"bild"
UIImage imageWithData的文档是:
数据:图像数据。这可以是您以编程方式创建的文件或数据中的数据。
您需要从NSArchive获取图像数据并将其(数据)提供给imageWithData方法。

读取和理解错误消息总是值得的,即使它需要一些时间来解决它们。