1

嗨朋友#1,CoreData和的NSXMLParser

我使用的NSXMLParser我從NSURLConnection的數據後分析網絡的XML文件。 XML有許多「項目」,每個項目包含1個類別。 在CoreData模塊中,我有一個與一個Category有關係的Item實體。

解析XML文件並敲擊消息解析器:didStartElement:...使用「Item」元素創建Item的NSEntityDescription。然後解析器再次在消息解析器中到達Category項目:didStartElement:...併爲類別創建一個NSEntityDescription。

的XML:

<item> 

<title>Plates</title> 

<category>Kitchen</category> 

<price>14</price> 

<picture></picture> 

​​

所以會發生什麼是保存上下文:呼叫正在呼籲currentCategory也先CURRENTITEM未完成創建。

回答

3

您似乎節省得太頻繁。在等待XML文件保存結束時,這可能不是一個好主意,但您可能希望等到您完成一個「實體」。

但是,我建議您也考慮一下不同的解析器。 TouchXML對你來說可能更有用,因爲它不像這樣低級別,並且可以使導入過程更容易概念化。

+0

這是一個很好的提示,我將在每個實體後保存。我不知道我可以保存所有的東西,但這似乎更安全。 關於TouchXML我會看看我已經下載了它,但我只是從XML中讀取,所以它看起來像NSXMLParser足以完成任務。 謝謝 – 2010-02-25 16:11:21

2

在分析完整個XML文件並插入需要插入的所有對象之前,不需要保存上下文。在解析例程中刪除-save:調用,並在解析操作完成時調用它。

+0

這是一個好主意,我將只保存在每個項目循環結束時,這會給我一個完整的數據循環。 感謝您的回覆 – 2010-02-25 16:12:00