2

有时我需要实例化 CoreDateEntity 来存储一些临时使用的信息。但我不需要将它存储到数据库中。

目前我创建了一个类似的类,它具有与 CoreDateEntity 相同的结构。它运作良好,但我必须在两个模型之间进行许多数据传输。

有没有更好的方法来处理这个?


感谢所有的答复。但你们只给我一半的答案。考虑到这一点,我需要将一些没有 MOC 的实体放入当前数据库池中,我该怎么做?我已经检查了 CoreData 的文档,似乎我没有找到将一个实体从 MOC 转移到另一个 MOC(管理对象上下文)的 API。

4

3 回答 3

7

根据 Apple 文档,如果将 nil 指定为上下文,则可以在没有上下文的情况下初始化托管对象。

- (id)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(NSManagedObjectContext *)context
于 2010-09-21T08:19:43.207 回答
2

您可以在设置数据模型时将实体分配给不同的商店。让一个存储成为持久存储,另一个存储在内存中。您无法跨商店建立关系,但听起来您不需要那样。

要分配配置,请点击实体详细信息中的配置选项卡(带有扳手图标的选项卡)(您可以在其中为其指定名称、类和父级)。创建持久存储时,将配置名称添加到选项字典。


更新:

我想你可能把事情复杂化了。听起来您有一些托管对象将是临时的,而一些托管对象将持续存在,但有时您可能希望保存临时对象。我认为您不应该费心尝试分离出“临时”对象。这样做只会增加复杂性,而不会带来任何性能优势。相反,只需使用普通的持久对象,然后删除不需要的对象。

总是先尝试最简单的解决方案。

于 2010-09-20T12:29:05.077 回答
0

使用两个不同的托管对象上下文,并且只保存一个上下文中的对象。注意不要在两个不同上下文的对象之间设置关系——这不起作用。

于 2010-09-20T13:52:25.103 回答