gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:54:36 25 4
gpt4 key购买 nike

我正在尝试使用以下代码将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com