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

1 回答 1

4

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

于 2012-05-07T20:57:58.407 回答