如何在不插入模型对象的情况下使用模型对象?

时间:2013-11-27 15:34:30

标签: ios objective-c core-data

我在我的项目中使用数据模型,有时我需要从服务器获取一些数据而不将其插入数据库中。但是我想用我的模型来操纵这些数据。但是每次创建模型对象时,都会在managedObjectContext执行save方法时插入它。

在这种情况下我该怎么办?我是否需要拥有此类的副本,但没有数据模型来操作对象中的数据而不将其插入数据库中?

2 个答案:

答案 0 :(得分:1)

  

但是每次创建模型对象时,都会在managedObjectContext执行save方法时插入它。

一种可能性是为这些瞬态对象使用单独的托管对象上下文。通常说托管对象上下文就像是用于操作数据的便笺簿。创建临时使用的新上下文可能很容易,但前提是您设计的代码不会假设只有一个上下文。

这是一个很好的例子,说明单身人士容易出错 - 许多应用程序使用单例对象(例如,app委托)来轻松访问“托管对象”上下文。这在概念上很简单,但是如果你的类从一些单例中获取MOC,你就不能告诉他们使用不同的MOC。如果你改为设计你的类,使得调用者提供MOC(或他们完成工作所需的任何对象),就可以很容易地使用多个MOC。

答案 1 :(得分:0)

您可以将nil传递给NSManagedObject的initWithEntity:insertIntoManagedObjectContext:方法的上下文参数。这将创建一个与任何上下文无关的对象,否则将正常运行(awakeFromInsert除外不会被调用。

这在文档中明确提到,所以它不是黑客:

  

如果context不是nil,则此方法调用[context insertObject:self](这会导致调用awakeFromInsert)。