如何使用临时对象CoreData?

时间:2014-05-24 06:49:27

标签: cocoa-touch core-data magicalrecord

我使用lib MagicalRecord(https://github.com/magicalpanda/MagicalRecord)进行CoreData.framework。

我不了解如何使用临时对象。

如何为临时对象创建NSManagedContext,以及在关闭控制器后是否删除每个NSManagedObject?

1 个答案:

答案 0 :(得分:5)

在上下文中创建的所有对象都是临时对象,并且在保存该上下文时它们将成为永久对象。所以要丢弃它们,你只是不保存这种背景。

创建一个新的(临时)上下文,假设您使用Apple的核心数据栈:

NSManagedObjectContext *tempChildContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
tempChildContext.parentContext = self.appDelegate.managedObjectContext;

要保存更改,您需要进行两次保存,一次在临时上下文中,然后将其推送到主上下文中。

[tempChildContext performBlock:^{
   // do something that takes some time asynchronously using the temp context

   // push to parent
   NSError *error;
   if (![tempChildContext save:&error])
   {
      // handle error
   }

   // save parent to disk asynchronously
   [self.appDelegate.managedObjectContext performBlock:^{
      NSError *error;
      if (![self.appDelegate.managedObjectContext save:&error])
      {
         // handle error
      }
   }];
}];

对不起,我不记得如何使用MagicalRecord,但MR只是CoreData的包装,所以它会起作用。我在第一个CoreData项目上停止使用MR。我建议你这样读:Multi-Context CoreData