2011-03-31 168 views
2

我有一个实体,比如Person,它有一个属性Name。iPhone核心数据 - 如何保存实体的新值?

我通过上下文创建它并获取Person的实例。现在我给

person.name = @“Jack”;

那么我如何在持久存储中更新这个?你可以说使用[上下文保存],但如果我调用该方法,上下文会保存从它发出的所有内容吗?

例如,如果我做

person1.name = @“Jack1”; person2.name = @“Jack2”;

我只想更新person1.name,但不是person2.name,我该怎么做?

感谢

+0

如果你不想保存它,你为什么要改变'person2.name'的值?请记住,你在这里讨论的是一个对象图,即在你正在改变属性的内存中的对象集合。皮层必须保存整个图形,因为这是维持图形完整性的唯一方法。您可能需要查看撤消功能。 – TechZen 2011-03-31 15:26:01

回答

2

您无法挑选哪些对象被保存,哪些不保存。当您保存上下文时,托管对象上下文中已修改的对象将被更新,并且保存上下文是保存该上下文中对象更改的唯一方法。

如果您想与person2一起工作,但可能不想提交您所做的任何更改,则可以创建单独的托管对象上下文。如果person2是一个新对象,因此不会连接到商店中的任何其他对象,这很有效,但如果person2可能已经存在于第一个上下文中,它会变得有点复杂。核心数据本身不会同步上下文之间的更改:有关如何处理此问题的更多信息,请参阅Communicating Changes Between Contexts

+0

我标记这个答案是因为我认为caleb给出更多的信息。阿萨德,我也对,谢谢你的帮助。 – Jack 2011-03-31 14:54:08

2

你为什么不尽快保存上下文你的person.name杰克设定值....? &继续使用Jack2

+0

如果该人员退出该应用程序,App Delegate可能已经在其中存在[上下文保存]。我与阿萨德在此。 – Walter 2011-03-31 10:18:24

+0

感谢您的回答。我的观点之一就是表现。如果我调用[上下文保存],它是否会扫描所有关联的对象并将其全部保存?我想这是低性能,当我只想保存一个对象,对吧?另外,你的意思是,每当我只想保存一个obj时,我会给出一个“保存”?谢谢 – Jack 2011-03-31 10:24:48