首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在CoreData中插入NSDictionary

在CoreData中插入NSDictionary
EN

Stack Overflow用户
提问于 2011-12-31 01:49:06
回答 4查看 23.7K关注 0票数 15

我有一个NSDictionary和一个CoreData数据库。我想将NSDictionary插入到数据库中。

如果possible)?

  • What是适合字典属性的类型,则
  1. 我该如何做?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-31 02:00:52

你需要把你的NSDictionary序列化为一个CoreData可以保存到NSData的NSData。

但是您将无法搜索NSDictionary的(谓词)元素。

如果我们想一想,NSDictionary是一个数据的集合。

数据库中的表是一种数据集合。

在CoreData中,最接近数据集合的是NSManagedObject。

因此,我的建议是创建一个NSManagedObject子类,用于保存NSDictionary中的信息。key将是属性,值将是该属性的value。您将能够基于该NSManagedObject子类的属性进行搜索。

票数 28
EN

Stack Overflow用户

发布于 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);
    }
}
票数 8
EN

Stack Overflow用户

发布于 2013-08-07 00:51:49

设置实体描述,插入新对象,然后使用:

[managedObject setValuesForKeysWithDictionary:dict];
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8682324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档