尝试使用核心数据将图像添加到数据库。视图控制器用于用户向数据库输入文本字段和图像。用户使用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的键值编码兼容。钥匙应该是什么?我是否正确地走这条路?顺便说一句,保存和检索文本工作正常。我唯一的问题是添加图片。
答案 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"]]];