使用Core Data将图像添加到数据库

时间:2013-10-16 06:50:55

标签: ios xcode core-data uiimage

尝试使用核心数据将图像添加到数据库。视图控制器用于用户向数据库输入文本字段和图像。用户使用UIImagePickerController选择图像。代码是:

- (void) add
{
NSManagedObjectContext *context = [app managedObjectContext];

Exercises *exercises = [NSEntityDescription insertNewObjectForEntityForName:@"Exercises" inManagedObjectContext:context];

exercises.name = name.text;
exercises.difficulty = difficulty.text;
exercises.type = type.text;
exercises.instructions = instructions.text;
NSData* image1 = [NSData dataWithData:UIImagePNGRepresentation(imageView.image)];
[NSManagedObject setValue:image1 forKey:@"imageView"];

[self dismissViewControllerAnimated:YES completion:nil];

错误是由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键值imageView的键值编码兼容。钥匙应该是什么?我是否正确地走这条路?顺便说一句,保存和检索文本工作正常。我唯一的问题是添加图片。

2 个答案:

答案 0 :(得分:4)

电话:

[NSManagedObject setValue:image1 forKey:@"imageView"];

尝试在课程setValue:forKey:上致电NSManagedObject。该类没有实现该方法,因此引发了异常。

您可能想在exercises上调用它,您刚刚创建的NSManagedObject实例 - 它是否有一个名为imageView的数据属性?

在样式和性能方面,首选访问特定setter的点符号,因为您已经用于所有其他属性,但与它旁边的PNG编码相比,它不太可能是一个问题。所以我不担心。

答案 1 :(得分:3)

尝试将图像保存在文档目录中,并在数据库中添加图像路径。

您可以使用以下方式访问图像:

[[UIImageView alloc]initWithImage:[UIImage imageWithData:
    [NSData dataWithContentsOfFile:@"PathStoredInDatabase"]]];