首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >iPhone:如何处理核心数据关系

iPhone:如何处理核心数据关系
EN

Stack Overflow用户
提问于 2011-03-20 11:15:18
回答 2查看 193关注 0票数 0

我对核心数据和数据库一般都是新手。现在我需要解析XML并将内容存储在Core Data中。XML看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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的帮助!

EN

回答 2

Stack Overflow用户

发布于 2011-03-20 15:48:51

不,你需要三个实体。您可以将"Books“视为您正在使用的CoreData数据库。然后,书本数据库包括许多称为CoreData的实体。

我认为您拥有的数据模型有点奇怪,但我猜它对您的应用程序是有意义的。为了将其映射到CoreData,我将:

添加实体书、页、文本

分别向它们添加bookId、pageId和textId

然后添加从页面图书的关系,以及从Text页面的关系。

到那时,您应该能够通过请求具有以下内容的所有页面来打印出整本书

图书=您感兴趣的图书

然后根据其pageId对所有这些页面进行排序

然后按顺序询问所有具有页面=当前页面的文本

然后根据他们的textId对这些文本进行排序。

可能出现的问题是,一个文本可以有多个值,如上面的XML所示。您可以通过添加另一个名为Value的实体来使用它,但是我可能会通过直接向Text实体添加属性"value“和"type”来解决这个问题。(然后,您可以在打印页面时使用"value“作为第二个排序关键字。

票数 2
EN

Stack Overflow用户

发布于 2011-03-20 15:27:13

查看这些链接:http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/ http://developer.apple.com/cocoa/coredatatutorial/index.html (对于普通的可可,但相同的原则适用,因此这应该会有所帮助)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5368100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文