【问题标题】:CoreData and Shared ManagedobjectContext in TabBar iphone appTabBar iphone 应用程序中的 CoreData 和 Shared ManagedobjectContext
【发布时间】:2010-07-20 08:26:26
【问题描述】:

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

我只能看到一种方法是为实体 B 或其他东西创建单独的上下文......?

请帮我解决这个问题。

谢谢,

【问题讨论】:

    标签: iphone core-data nsmanagedobjectcontext


    【解决方案1】:

    你可以:

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

    我几乎总是选择 (3)。这是迄今为止最简单、最安全的方法。由于它模仿了用户实际在做什么,即创建一个数据对象然后决定将其丢弃,这也是一种很好的设计实践。

    【讨论】:

    • 感谢您的帮助。我理解您的建议,但在我的情况下,我需要提供查找并允许用户在为对象 A 添加新记录时即时添加新的相关实体。正如我之前提到的,对象 A 是主表包含其他子表引用.因此,在主表 A 中添加新记录时,用户应该能够选择子表记录,并且如果不存在也能够创建新记录。我的问题是首先我正在创建新的对象 A,然后允许用户动态添加新的子对象 B。为此,我发现解决方案 1(单独的上下文)适用于我的情况。
    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多