2012-01-15 52 views
1

我用UserDefaults將圖片保存到NSData,現在希望它在tableview單元格中檢索。嘗試檢索圖像 - 獲取EXC_BAD_ACCESS錯誤

以下是我放在TableView.m

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

這裏的viewDidLoad中的是什麼,我把TableView中cellforRowatIndex

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

然而,當我開始PROGRAME我得到一個EXC_BAD_ACCESS錯誤在cell.imageView.image行與一個「不兼容的指針類型發送」NSString *「到參數類型」NSData *「」

這裏是btw如何我保存的圖像中的第一位置:

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

使用NSKeyedUnarchiver爲對口NSKeyedArchiver這樣的:

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

感謝您的快速響應。錯誤全部消失,但不是顯示圖像,而是在單元格右側出現一個箭頭。 – Blade 2012-01-15 12:51:52

+0

我想我現在的問題是,他沒有保存任何東西在@「圖像」鍵... – Blade 2012-01-15 12:57:14

+1

@Blade就我所見,你需要在歸檔之前用實際的'UIImage'初始化'yourUIImage'它以用戶默認值。 – Costique 2012-01-15 13:02:31

1

錯誤消息:
「不相容指針類型發送‘的NSString *’,以類型的paramater‘NSData的*’」
一個NSString供給作爲參數,而不是的NSData。
看你的方法調用行:

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

的參數是一個NSString:@"bild"
UIImage imageWithData的文檔是:
data:圖像數據。這可以是來自以編程方式創建的文件或數據的數據。
您需要從NSArchive獲取圖像數據並將其(數據)提供給imageWithData方法。

即使需要花費一些時間才能發現錯誤信息,它總是能夠閱讀並理解錯誤信息。

+0

感謝您的快速答覆。我是編程新手,閱讀錯誤消息,但認爲我會做正確的方式,並可能犯了另一個錯誤(正如我將它保存在NSData中)。如果我理解正確,我必須從「yourUIImage」獲取數據,對嗎?我試過了,但是它不會讓我看到圖像只是一個指向單元格右邊的箭頭。 – Blade 2012-01-15 12:44:57

+0

查看@Costique如何處理'NSKeyedUnarchiver'的答案。我的回答更多的是如何理解錯誤信息。 – zaph 2012-01-15 12:52:19

+0

謝謝你的好建議:) – Blade 2012-01-15 12:54:29