我是核心数据和数据库的新手。现在我需要解析XML并将内容存储在Core Data中。 XML看起来像这样:
<books>
<book id="123A" name="My Book">
<page id="95D" name="Introduction">
<text id="69F" type="header" value="author text"/>
<text id="67F" type="footer" value="author text"/>
</page>
<page id="76F" name="Chapter 1">
<text id="118" type="selection">
<value data="1">value1</value>
<value data="2">value2</value>
<value data="3">value3</value>
</text>
</page>
</book>
<book id="124A"...
根据我的理解,我需要四个实体,如“书籍”,“书籍”,“页面”和“文字”。我想知道如何正确设置关系以及如何将Page对象添加到Book对象以及如何检索Text对象属性的值?我发现的教程主要涉及一个实体,所以我没有真正理解这个想法。感谢任何帮助!
答案 0 :(得分:2)
不,你需要三个实体。您可以将“Books”视为您正在使用的CoreData数据库。然后,CoreData数据库包含许多名为book的实体。
我认为您拥有的数据模型有点奇怪,但我想这对您的应用程序有意义。要将它映射到CoreData,我会:
添加实体书籍,页面,文字
分别向他们添加 bookId,pageId,textId 。
然后将页面与图书之间的关系添加到文字到页面。
到那时你应该能够通过询问所有
页面来打印整本书预订 =您感兴趣的书
然后按 pageId
排序所有这些页面按顺序,要求所有的文本 页面 =当前页面
然后按 textId 对这些文本进行排序。
可能存在的问题是文本可以有多个值,如上面的XML所示。你可以通过添加另一个名为Value的实体来使用它,但我可能会通过直接将属性“value”和“type”添加到 Text 实体来解决它。 (然后,您可以在打印页面时使用“value”作为第二个排序键。
答案 1 :(得分:0)
查看以下链接: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/ http://developer.apple.com/cocoa/coredatatutorial/index.html(对于普通的Cocoa,但同样的原则也适用,所以这应该有帮助)