2012-05-07 85 views
1

該代碼應該保存核心數據。該圖像存儲在它自己的實體,喜歡另一個實體(關係)核心數據中的UIImage

NSEntityDescription *imageEntity = [ NSEntityDescription insertNewObjectForEntityForName:kImage inManagedObjectContext:self.context]; 
    [imageEntity setValue:self.image forKey:kPicture]; 

    [newPerson setValue:imageEntity forKey:kPicture]; 

    NSError *error; 
    if (![self.context save:&error]) { 
     NSLog(@"Whoops, couldn't save new associate: %@", [error localizedDescription]); 
    } 

在這裏,我試圖把它找回來,把它放在一個的UIImageView上的自定義單元格

Person *crt = [self.fetchController objectAtIndexPath:indexPath]; 
    cell.name.text = crt.name; 
    Image *img = crt.picture; 
    cell.image.image = img.picture; 

這隻第一次添加圖片時工作...重新啓動應用程序後圖像不再顯示..爲什麼?它設置爲可變形的屬性

回答

4

您可以添加UIImage只爲二進制數據。所以,你需要做的是你的實體的屬性類型設置爲Binary Data,以及使用CoreGraphics'方法UIImagePNGRepresentation(UIImage *image),返回NSData並保存這種方式。如果你想從數據庫中提取它,你可以得到NSData並用[UIimage imageWithData:(NSData *data)]方法創建一個圖像。
但我認爲最好的實現是在數據庫中存儲僅對圖像的本地路徑,但實際的文件存儲在您的應用程序的文檔文件夾中的文件夾...只是一個建議英寸

+0

的奇怪的是,我做這個別的地方也(保存圖像(小PNG))的可轉換......還有它的作品... – user1028028