0

我正在尝试将从 iphone 相机拍摄的照片保存到核心数据。

我有从相机拍摄的 UIImage 。在那之后,我不知道我应该做什么。

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

所以我创建了一个问题实体。现在如何将 UIImage 保存到 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;
4

1 回答 1

1

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

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

于 2011-08-01T20:36:28.810 回答