">
我对核心数据和数据库一般都是新手。现在我需要解析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"...
根据我的理解,我需要四个实体,像"Books","Book","Pages“和"Text”。我想知道如何正确设置关系,如何将页面对象添加到Book对象,以及如何检索文本对象属性的值?我发现的教程大多只涉及一个实体,所以我并没有真正理解这个想法。感谢Gtrateful的帮助!
发布于 2011-03-20 15:48:51
不,你需要三个实体。您可以将"Books“视为您正在使用的CoreData数据库。然后,书本数据库包括许多称为CoreData的实体。
我认为您拥有的数据模型有点奇怪,但我猜它对您的应用程序是有意义的。为了将其映射到CoreData,我将:
添加实体书、页、文本
分别向它们添加bookId、pageId和textId。
然后添加从页面到图书的关系,以及从Text到页面的关系。
到那时,您应该能够通过请求具有以下内容的所有页面来打印出整本书
图书=您感兴趣的图书
然后根据其pageId对所有这些页面进行排序
然后按顺序询问所有具有页面=当前页面的文本
然后根据他们的textId对这些文本进行排序。
可能出现的问题是,一个文本可以有多个值,如上面的XML所示。您可以通过添加另一个名为Value的实体来使用它,但是我可能会通过直接向Text实体添加属性"value“和"type”来解决这个问题。(然后,您可以在打印页面时使用"value“作为第二个排序关键字。
发布于 2011-03-20 15:27:13
查看这些链接:http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/ http://developer.apple.com/cocoa/coredatatutorial/index.html (对于普通的可可,但相同的原则适用,因此这应该会有所帮助)
https://stackoverflow.com/questions/5368100
复制相似问题