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

时间:2011-08-01 19:48:29

标签: ios core-data uiimage nsvaluetransformer

我正在尝试将从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 个答案:

答案 0 :(得分:1)

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

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