我有一个NSDictionary和一个CoreData数据库。我想将NSDictionary插入到数据库中。
如果possible)?
发布于 2011-12-31 02:00:52
你需要把你的NSDictionary序列化为一个CoreData可以保存到NSData的NSData。
但是您将无法搜索NSDictionary的(谓词)元素。
如果我们想一想,NSDictionary是一个数据的集合。
数据库中的表是一种数据集合。
在CoreData中,最接近数据集合的是NSManagedObject。
因此,我的建议是创建一个NSManagedObject子类,用于保存NSDictionary中的信息。key
将是属性,值将是该属性的value
。您将能够基于该NSManagedObject子类的属性进行搜索。
发布于 2014-09-17 21:15:57
我找到了另一种方法来将字典添加到Coredata中,方法是创建一个数据类型为“Transformable”的属性。
例如,在您的项目和属性中创建一个数据类型为Transformable的实体。为NSManagedObject生成子类。属性将可用于数据类型“”id“”,请更改为NSDictionary。“
下面是我所做的(我的NSManagedObject子类名称是'DictTest')
-(void)InsertIntoDataBase
{
DictTest *entityDict=(DictTest*)[NSEntityDescription insertNewObjectForEntityForName:@"DictTest" inManagedObjectContext:self.managedObjectContext];
NSMutableDictionary *mutDict=[NSMutableDictionary dictionary];
[mutDict setValue:@"1" forKey:@"1"];
[mutDict setValue:@"2" forKey:@"2"];
[mutDict setValue:@"3" forKey:@"3"];
[mutDict setValue:@"4" forKey:@"4"];
[mutDict setValue:@"5" forKey:@"5"];
[mutDict setValue:@"6" forKey:@"6"];
[mutDict setValue:@"7" forKey:@"7"];
[mutDict setValue:@"8" forKey:@"8"];
[mutDict setValue:@"9" forKey:@"9"];
[mutDict setValue:@"10" forKey:@"10"];
[entityDict setInfoDict:mutDict];
NSError *error;
if(![self.managedObjectContext save:&error])
{
NSLog(@"error description is : %@",error.localizedDescription);
}
else{
NSLog(@"Saved");
}
}
用于获取记录
-(void)FetchRecord
{
NSFetchRequest *request=[[NSFetchRequest alloc]init];
NSEntityDescription *entity=[NSEntityDescription entityForName:@"DictTest" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSArray *fetchArray= [self.managedObjectContext executeFetchRequest:request error:nil];
for (DictTest *obj in fetchArray) {
NSLog(@"Dict is : %@",obj.infoDict);
}
}
发布于 2013-08-07 00:51:49
设置实体描述,插入新对象,然后使用:
[managedObject setValuesForKeysWithDictionary:dict];
https://stackoverflow.com/questions/8682324
复制相似问题