2010-07-20 26 views
0

我a,工作在coredata iphone TabBar应用程序并将appdelegate managedObjectContext传递给所有视图和子视图。在某些实例中,我需要为实体A创建新记录,而实体A没有由用户保存,我需要通过使用相同的共享上下文创建另一个实体B.现在,我的问题是如果我保存实体B的上下文,那么它也会保存实体A.我不想保存实体A,直到或更少的用户不想保存它。TabBar中的CoreData和Shared ManagedobjectContext iphone应用程序

我可以看到只有一种方法是为实体B或其他内容创建单独的上下文....?

请帮我解决这个问题。

感谢,

回答

0

您可以:

  1. 使用一个单独的上下文。 Pro:做你想做的。骗局:增加了复杂性,你不能轻易形成关系。
  2. 在插入对象时,通过传递上下文的nil值,在nil上下文中创建对象A.然后将其添加到上下文,当你想保存。 Pro:做你想做的。 Con:与上述相同,并且松散了上下文提供的所有功能,例如撤消支持。
  3. 只要删除对象-A是用户决定他们不想保留。 Pro:简单而安全。 Con:对象图中的关系必须允许删除对象-A,即你想保留的其他对象不能要求对象-A存在。设计模型时必须牢记这一点。

我几乎总是跟(3)一起走。这是迄今为止最简单和最安全的方法。由于它模仿用户实际正在做的事情,即创建一个数据对象,然后决定抛弃它,这也是一种很好的设计实践。

+0

感谢您的帮助。我理解你的建议,但在我的情况下,我需要给予查找,并允许用户添加新的相关实体,同时为对象A添加新记录。正如我前面提到的对象A是主表包含其他子表引用。所以,当在主表A中添加新记录时,用户应该能够选择子表记录并且能够创建新的如果不存在。 我的问题是首先我创建新的对象A,然后允许用户在飞行中添加新的子对象B.为此,我找到了解决方案1(单独的上下文)在我的情况下工作。 – AmitSri 2010-07-28 06:37:51

相关问题