【问题标题】:Add temporary coredata entity in a relationship with a non-temporary entity在与非临时实体的关系中添加临时 coredata 实体
【发布时间】:2012-03-09 17:51:48
【问题描述】:

假设我有一个填充了实体 (Entity-A) 的提取结果数组

所有这些实体都与另一个 EntityB 有关系。

fetchedArray 中可能缺少一些实体,这种情况下我想手动创建一个新的 Entity-A,将其设置为与 EntityB 的关系并手动将其添加到实体数组中,

Doable, but I don't want to save those "created", "new" entities of A type.

如果我确实创建了一个新的 Entity-A 并将 nil 添加到它的 NSManagedObjectContext,我不能将它作为与 entityB 的关系添加,因为它在 objectContext 中..

这里还有其他方法吗?我不想冒险将它添加到数据库然后删除它因为通过核心数据连接的应用程序,这会增加很多复杂性,不要忘记应用程序刚刚关闭时的异常事件,电池耗尽或其他事情..

我的主要问题是一种在与现有实体的关系中添加新临时实体并忘记保存它的方法..

真的很感激任何出路,一直在努力解决这个问题..

【问题讨论】:

    标签: iphone xcode core-data nsmanagedobject nsmanagedobjectcontext


    【解决方案1】:

    杰森,

    Yours 是一个完美的暂存器 MOC(托管对象上下文)应用程序。基本上,创建一个新的 MOC 并且永远不要保存它。然后添加到实体的项目永远不会命中持久存储。

    安德鲁

    【讨论】:

    • 警告,新创建的 MOC 以及想要与现有 MOC 建立关系的实体将无法正常工作。不同 MOC 之间的关系将不起作用。
    • 是的@adonoho 我可以创建一个新的 MOC 并且永远不会保存它,但是我想让新 MOC 中的实体与旧 MOC 中的实体相关联,这在两个不同的上下文之间是不可能的.我需要找到一种方法来获取这些临时实体!与现有实体相关且不保存
    • jasonIM,不要越过 MOC,那样会很糟糕。为什么需要交叉 MOC 引用而不是通过获取或对象 ID 从持久存储中读取旧实体?行缓存是你的朋友。安德鲁
    • 从一堆子实体中,如果特定的不存在,我使用“nil”上下文创建它。然后将其与 .. 与其他人一样 .. 与其父实体相关。 Coredata 不允许这种关系。这种尝试的原因是,我可以从父母那里引用孩子,当我调用 MOC Save 时,我创建的“nil”子实体不会持续存在。虽然我可以添加一个属性并使用“shouldDeleteBeforeSave”删除所有子项..但这会产生很多开销..我希望你能得到我想要完成的任务!
    • jasonIM/user134611,我可以恭敬地建议您进行过早的优化。您是否真的有来自 Instruments 的数据表明您正在创造性能关键开销?从你的cmets,我怀疑它。根据我使用 Core Data 的经验,当它不需要查询持久存储时,它的速度非常快。已创建但从未保存的对象不会进入存储区。我认为您没有问题,我鼓励您尝试使用 Core Data 方式。一般来说,不要与 Cocoa 框架抗争。安德鲁
    猜你喜欢
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2023-03-26
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多