2011-05-24 120 views
0

创建实体我用核心数据幼稚的问题

studys *temppatient = (studys *)[NSEntityDescription insertNewObjectForEntityForName:@"studys" inManagedObjectContext:managedObjectContext_NEW]; 

如果我waant创建到使用它作为临时实体的对象,什么是正确的代码来创建实体

的对象

回答

0

我ð这样来做:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Studies" 
              inManagedObjectContext:myManagedObjectContext]; 

Studies *studies = [[Studies alloc] initWithEntity:entity 
        insertIntoManagedObjectContext:myManagedObjectContext]; 

Studies是NSManagedObject类的子类。您可以通过选择实体并创建它自动创建它:

文件 - >新建文件 - >可可触摸类 - >托管对象类

+0

什么是QuestionWithAnswers我只需要一个研究实体对象 – AMH 2011-05-24 08:02:45

+0

@AMH对不起,不属于那里,改编我的一些代码为你的例子。更正它。 – 2011-05-24 08:05:53

+0

我不想用它来插入,我希望它作为临时文件 – AMH 2011-05-24 08:05:56

0

您可以在零背景插入实体,并将它们添加到一个有效的上下文后来....

我有示例代码和一个完整的写了.... Temporary Storage In CoreData

+0

ü意味着studys * temppatient =(studys *)[NSEntityDescription insertNewObjectForEntityForName:@“studys “inManagedObjectContext:nil];并使用它作为温度你会帮助我在这个问题http://stackoverflow.com/questions/6100812/illegal-attempt-to-establish-a-relationship-between-objects-in-different-contexts – AMH 2011-05-24 08:25:07

+0

看看我链接的博客文章,它有代码示例,您可以下载该项目并查看其工作。基本思想是直接分配/初始化'studys'对象,而不是通过NSEntityDescription。 – 2011-05-24 08:29:20

0

如果您想要将其用作临时文件,只需在保存上下文之前将其从上下文中删除即可。这就是我在这种情况下会做的。从Web服务同步核心数据内容时,我广泛使用了这种技术。所以在你的上下文中启动你的实体。设置你的属性或其他。在保存上下文之前,使用该对象将属性传递给另一个托管对象并从上下文中删除该临时实体。应该这样做。

+0

可以给我例 – AMH 2011-05-24 08:43:49

+0

可以说你有两个托管对象:object1和object2。第一个是你从上下文中获取的。第二个是刚刚在同一个上下文中插入的新创建的对象。您将对象2的道具设置为您拥有的任何数据,并将其用作临时对象。当你完成后,你可以设置你需要从object2到object1的任何属性,然后执行[managedObjectContext deleteObject:object2];在使用[managedObjectContext save:&saveError]实际保存上下文状态(包括修改的object1)之前;呼叫 – 2011-05-24 09:05:47