2011-03-31 54 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