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