在没有initWithEntity的情况下使用NSManagedObject类:?

我的问题类似于: 创建NSManagedObject派生类时出现问题

我在Core Data中设置了一个NSManagedObject,并为它准备了一个类。 但是,我不想创建一个相同的NSObject类,而是想使用NSManagedObject类,但我不想创建实体并保存它。 我只是想将它用于数组,只有当我需要在Core Data中保存对象时我才想使用insertEntity:

Store * store = [[Store alloc] init];

它给了我以下错误: CoreData: error: Failed to call designated initializer on NSManagedObject class 'Store'

有没有办法让子类或以某种方式使用NSManagedObject类/属性来分配我刚刚临时用于表的对象?

谢谢。

只需使用initWithEntity:insertIntoManagedObjectContext:并传递一个nil上下文,然后在准备就绪时在NSMAnagedObjectContext中调用insertObject

 NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyModelClass" inManagedObjectContext:myContext]; id object = [[MyModelClass alloc] initWithEntity:entity insertIntoManagedObjectContext:nil]; 

如果您不保存MOC,则可以在保存之前删除该对象,并且永远不会保留该对象。

虽然Core Data非常适合持久化,但并不是必需的。 事实上,MOC通常被描述为便笺簿。 您可以生成对象然后将它们丢弃。

NSManagedObjectContext的实例表示应用程序中的单个“对象空间”或便笺簿。

另一种解决方案是为临时对象设置单独的MOC,然后丢弃临时MOC或将MO移动到持久性MOC中。

因此,在这种情况下,您将在“Persistent MOC”上使用- (void)insertObject:(NSManagedObject *)object ,然后在“Temporary MOC”上使用- (void)deleteObject:(NSManagedObject *)object