我使用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"];
答案 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
方法。
读取和理解错误消息总是值得的,即使它需要一些时间来解决它们。