核心数据中的UIImage

时间:2012-05-07 20:49:11

标签: ios core-data 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;

仅在首次添加图片时才有效...重新启动应用后,图片不再显示..为什么会这样?它被设置为可转换属性

1 个答案:

答案 0 :(得分:4)

您只能将UIImage添加为二进制数据。所以你需要做的是将你的实体的属性类型设置为Binary Data,并使用CoreGraphics'方法UIImagePNGRepresentation(UIImage *image),它返回NSData并保存它办法。如果您想从数据库中提取它,则会获得NSData并使用[UIimage imageWithData:(NSData *data)]方法创建图像。
但我认为最好的实现是只存储数据库中图像的本地路径,但实际文件存储在应用程序文档文件夹的文件夹中......只是一个建议。