Попытка получить изображение - ошибка EXC_BAD_ACCESS - PullRequest
1 голос
/ 15 января 2012

Я сохранил изображение в NSData с UserDefaults и теперь хочу, чтобы оно было получено в ячейке табличного представления.

Вот то, что я положил в ViewDidLoad TableView.m

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

А вот то, что я положил в ячейку TableViewforRowatIndex

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

Однако когдазапустить программу Я получаю сообщение об ошибке EXC_BAD_ACCESS в строке cell.imageView.image вместе с «несовместимыми указателями типов, отправляющими« 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 ]

2 голосов
/ 15 января 2012

Используйте NSKeyedUnarchiver в качестве аналога NSKeyedArchiver, например:

NSData *imageData = [[NSUserDefaults standardUserDefaults] dataForKey: @"image"];
cell.imageView.image = [NSKeyedUnarchiver unarchiveObjectWithData: imageData];
1 голос
/ 15 января 2012

Сообщение об ошибке:
"несовместимые типы указателей, отправляющие« NSString * »параметру типа« NSData * »"
NSString был предоставлен в качестве параметра вместо NSData.
Просмотр строки вызова вашего метода:

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

Параметром является строка NSString: @"bild".
Документация для UIImage imageWithData:
данные: данные изображения. Это могут быть данные из файла или данные, которые вы создаете программно.
вам нужно получить данные изображения из NSArchive и передать их (данные) в метод imageWithData.

Всегда полезно читать и понимать сообщения об ошибках, даже если требуется некоторое время, чтобы их выяснить.

...