我有一个名为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] ;
答案 0 :(得分:1)
您无法使用init
,因为它不是NSManagedObject
的指定初始值设定项。但关于initWithEntity:insertIntoManagedObjectContext:
的事情是允许第二个参数为零。如果这样做,您将获得尚未插入上下文的新实例。稍后,如果您的检查通过,您可以在保存更改之前使用insertObject:
插入它。
答案 1 :(得分:0)
看看-[NSManagedObjectContext insertObject:]
。