首页 文章

将UIImage保存到核心数据中; NSValueTransformers的问题

提问于
浏览
0

我试图将从iphone相机拍摄的照片保存到核心数据 .

我从相机中取出了UIImage . 在那之后,我不知道我应该做什么 .

每个pic与问题实体相关联 . 现在问题实体没有图像字段 . 它与Image实体有关系 . 这样每个问题都可以有许多与之相关的UIImages .

所以我创建了一个问题实体 . 现在我如何将UIImage保存到核心数据到Image实体中,如何将其与问题实体连接?我需要创建一个Image实体吗?我创建了一个ImageToDataTransformer,但我不知道是谁调用了 - 核心数据还是我?在我的xcdatamodel中,我有一个Image实体 . 我在那里放了ImageToDataTransformer .

我知道我应该将URL存储到UIImage,但我想了解如何存储图像 . 这对我来说似乎有些困惑 .

谢谢

Question *question = [NSEntityDescription insertNewObjectForEntityForName:@"Question" inManagedObjectContext:managedObjectContext];
question.date = [NSDate date];

ImageToDataTransformer *transformer = [[ImageToDataTransformer alloc]init];
NSData *imageData = [transformer transformedValue:mm];//mm is an id, but it is the UIImage saved from the camera.
question.image = imageData;

1 回答

  • 1

    我建议你创建一个QuestionImage实体(或类似的东西)并给它一个名为path的字符串属性 . 此路径将在您先前已写出图像的磁盘上存储一个位置 . 将图像放在文档文件夹中将确保它不会被任何缓存转储清除 . 在您的QuestionImage实体(或任何您命名的实体)的实现中,您可以实现prepareForDeletion并从磁盘中删除图像,以确保您没有任何未引用的图像 .

    在Core Data中存储二进制数据可能很麻烦,应尽可能避免 .

相关问题