我需要一些建議如何去做這件事:策略問題:從XML檢索數據以更新本地Core Data DB?
1)我從Web服務器檢索XML。
2)我想使用核心數據在設備上本地存儲來自該XML的所有實體(即朋友)。
3)所以我解析XML,併爲每一位朋友的託管對象在XML
4),但我想確保我沒有一個朋友多次添加到數據庫。我怎麼能做到這一點?
--------------這個----------------
A)我的策略思想在解析XML,只要有Friend元素啓動,我就創建了Friend實體的Managed Object。在那時,我不知道它會是哪個朋友,直到NSXMLParser遍歷所有即將到來的屬性,如firstName,id等;在Friend元素的End-tag之後,我在我的Managed Object Context中有該朋友。然後我創建一個NSFetchRequest來查看該朋友是否已經存儲。問題是,新朋友已經是上下文的一部分,因此核心數據可能會一直返回匹配! B)我需要兩個不同的託管對象上下文,以便解析的朋友首先進入MOC_A,然後查詢MOC_B(實際的本地存儲),而沒有解析出的新朋友干擾我查詢本地存儲。所以我可以找出朋友是否已經存在。
C)從XML解析朋友時,我只是創建一個新的託管對象實例,而不將其添加到託管對象上下文(可能?!)。後來,當朋友完全成功時,如果核心數據被存儲,我將覈對它。如果沒有,我補充一下。否則,我把物體扔掉。
D)我需要另一種策略。
您已經以不同方式多次提出這個問題。答案是在Core Data實體中使用新的索引屬性來存儲XML中的唯一ID。在添加對象之前,您必須手動檢查具有該ID的對象是否已經存在。 – gerry3 2010-02-12 10:12:15
也許我以不同的方式提出這個問題,因爲到目前爲止我還沒有得到任何有用的答案。這個也沒用。我不知道你想說什麼。請更詳細一點。就像我問的那樣(並且最近得到了答案),問題是我的新分析對象存在於上下文中,因此查詢核心數據可能會導致匹配。在投票前請完整閱讀我的問題。 – dontWatchMyProfile 2010-02-12 10:14:10
既然已經添加了新的信息,那就更有意義了。但是,您也可以將此信息添加到其他任何問題中。 – gerry3 2010-02-12 10:19:22