在CoreData之外使用自动生成的模型文件对象

时间:2015-11-17 16:06:44

标签: ios objective-c core-data

我有一个名为MessageDetailStore的CoreData实体,用于保存传入的消息。由于可以在不同的地方接收消息,因此我有一个名为-insertMessage:txt:的常用方法,用于处理将消息插入队列(它还可以执行其他操作,例如检查重复项,更新相关表等。 )。最初我的函数参数是NSDictionary类型,每个键/值对应MessageDetailStore实体中的一个条目。这很有效。

我决定通过使type = auto-generated类的方法的输入参数对应于MessageDetailStore来获得一些类型安全和其他保护。代码如下。

看起来这不起作用,因为[[alloc] init]没有生成对象,我需要使用-initWithEntity:insertIntoManagedObjectContext:。但是使用后者将导致将新实体添加到对象图中。但我希望只有在进行各种检查后才能完成。有没有办法在CoreData之外创建“自动生成”类的实例?

     MessageDetailTable *messageToStoreFromPush =[[MessageDetailTable alloc] init] ;
     messageToStoreFromPush.isMedia=FALSE ;
     messageToStoreFromPush.msgContent=dict[@"msg"]  
     messageToStoreFromPush.sendingUserID=dict[@"sendingUser"] ;
     messageToStoreFromPush.seqNumber=[NSNumber numberWithInt:[dict[@"seqNum"] intValue]] ;

     [self insertBcastMessage:messageToStoreFromPush] ;

2 个答案:

答案 0 :(得分:1)

您无法使用init,因为它不是NSManagedObject的指定初始值设定项。但关于initWithEntity:insertIntoManagedObjectContext:的事情是允许第二个参数为零。如果这样做,您将获得尚未插入上下文的新实例。稍后,如果您的检查通过,您可以在保存更改之前使用insertObject:插入它。

答案 1 :(得分:0)

看看-[NSManagedObjectContext insertObject:]