OXX*_*XXY 15 iphone core-data objective-c nsdictionary
我有一个NSDictionary和一个CoreData数据库.我想将NSDictionary插入数据库.
我该怎么做(如果可能的话代码片段)?
字典属性的合适类型是什么?
Vin*_*ier 28
您需要将NSDictionary序列化为NSData,CoreData可以保存为NSData.
但是你将无法搜索NSDictionary的(谓词)元素.
如果我们考虑一下,NSDictionary就是一个数据集合.
数据库中的表是一种数据集合.
在CoreData中,最接近数据集合的是NSManagedObject.
所以我的建议是创建一个NSManagedObject子类,它将保存您在NSDictionary中的信息.该key会是属性和值将是value该属性的.并且您将能够基于该NSManagedObject子类的属性进行搜索.
我找到了另一种通过创建数据类型为"Transformable"的属性将Dictionary添加到Coredata的方法.
例如,在项目和属性中使用数据类型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");
}
}
Run Code Online (Sandbox Code Playgroud)
用于获取记录
-(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);
}
}
Run Code Online (Sandbox Code Playgroud)
设置实体描述,插入新对象,然后使用:
[managedObject setValuesForKeysWithDictionary:dict];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23081 次 |
| 最近记录: |