ios - 实体描述值 ForUndefinedKey 此类与键 "KEY"的键值编码不兼容

标签 ios objective-c core-data

我正在尝试使用以下代码将 NSDictionary 保存到核心数据。

NSManagedObject *myObject = [NSEntityDescription
                                insertNewObjectForEntityForName:@"HomeDB"
                                inManagedObjectContext:context];
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:dataDict forKey:@"pod_casts"];
[archiver finishEncoding];
[archiver release];
[myObject setValue:data forKey:@"podcasts"];
[data release];

[self saveChanges];

还尝试使用以下代码从核心数据中检索 NSDictionary

NSEntityDescription *p = [NSEntityDescription entityForName:@"HomeDB" inManagedObjectContext:context];
NSData *data1 = [[NSMutableData alloc] initWithData:[p valueForKey:@"podcasts"]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data1];
NSDictionary *dbData=[[unarchiver decodeObjectForKey:@"pod_casts"] retain];
[unarchiver finishDecoding];
[unarchiver release];
[data1 release];

这有什么问题吗?帮我。

我创建了一个实体“HomeDB”,它有一个“二进制”类型的属性“podcasts”

提前致谢

最佳答案

entityForName:... 返回一个 NSEntityDescription,你似乎认为它会返回你在第一个创建的 HomeDB 对象代码片段。

要从核心数据中检索托管对象,您需要使用获取请求,如下所示:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"HomeDB"];
NSArray *results = [context executeFetchRequest:request error:nil];

结果数组将包含您上下文中的所有 HomeDB 对象。

假设你只有一个,那么你会像这样把它拿出来:

NSManagedObject *homeDB = [results lastObject];
NSData *data = [homeDB valueForKey:@"podcasts"];

从这里开始,您可以像在第二个代码片段中一样继续使用 data 对象。

关于ios - 实体描述值 ForUndefinedKey 此类与键 "KEY"的键值编码不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984063/

相关文章:

objective-c - 如何替换 "Navigation-based application"中的RootViewController

ios - 恢复过去的 NSLog

ios - 调用核心数据中的单个特定行

ios - 将枚举值设置为核心数据对象

ios - 有没有办法让 TextField 输入像 ios 中的谷歌钱包输入一样?请参阅所附照片以了解我的需要

ios - 防止键盘隐藏 UITableView 底部的 UITextField

ios - jazzy 的 Xcode 集成脚本,Swift 项目的文档生成器

ios - 无法在导航栏中心设置titleView,因为返回按钮

objective-c - @synthesize variable = t_variable 到底有什么作用?是不是很有帮助?

ios - 带有 inputAccessoryView 的 UIViewController 未被释放