EntityDescription的值ForUndefinedKey这个类不是密钥编码兼容的密钥“KEY”
问题描述:
我试图用以下代码将NSDictionary保存到核心数据。EntityDescription的值ForUndefinedKey这个类不是密钥编码兼容的密钥“KEY”
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];
而且还试图从核心数据与下面的代码
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];
检索的NSDictionary有什么不对呢?帮我。
我所创建的实体“HomeDB”有一个属性“播客”类型“二进制”提前
感谢
答
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
对象作为你在你的第二个代码片段继续。
我将数据保存为也编码的NSData。我需要这个NSData作为响应,然后我必须解码它。 此NSFetchRequest将返回结果作为NSArray。 你能帮我吗? –
正如我在答案中所说的那样,数组将包含上下文中的所有HomeDB对象。我不知道你有多少,或者你想要哪一个。但是你可以用'[results lastObject]''来获得其中的一个。这会给你一个实际的'HomeDB'对象,然后你可以使用'valueForKey:@“播客获得数据”'' – jrturton