我正在尝试使用以下代码将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"有一个属性"播客"类型" Binary"
提前致谢
答案 0 :(得分:2)
entityForName:...
返回NSEntityDescription
,您似乎认为它将返回您在第一个代码段中创建的HomeDB
对象。
要从核心数据中检索托管对象,您需要使用获取请求,如下所示:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"HomeDB"];
NSArray *results = [context executeFetchRequest:request error:nil];
results数组将包含上下文中的所有HomeDB
个对象。
假设你只有一个,那么你就这样得到它:
NSManagedObject *homeDB = [results lastObject];
NSData *data = [homeDB valueForKey:@"podcasts"];
从这一点开始,您可以像在第二个代码段中一样继续使用data
对象。