0

尝试使用核心数据将图像添加到数据库。视图控制器用于用户向数据库输入文本字段和图像。用户使用 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 的键值编码不兼容。” 钥匙应该是什么?我是否以正确的方式去做这件事?顺便说一句,保存和检索文本工作正常。我添加图像的唯一问题。

4

2 回答 2

4

来电:

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

尝试调用setValue:forKey:NSManagedObject。该类没有实现该方法,因此会引发异常。

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

在样式和性能方面,访问特定设置器的点表示法是首选,因为您已将所有其他属性用于,但与它旁边的 PNG 编码相比,它不太可能成为问题,所以我不会别担心。

于 2013-10-16T06:56:46.857 回答
3

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

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

[[UIImageView alloc]initWithImage:[UIImage imageWithData:
    [NSData dataWithContentsOfFile:@"PathStoredInDatabase"]]];
于 2013-10-16T07:09:42.317 回答