2011-03-20 72 views
0

我是一般的核心數據和數據庫的新手。現在我需要解析XML並將內容存儲在Core Data中。該XML看起來是這樣的:iPhone:如何處理核心數據關係

<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對象屬性的值?我找到的教程主要涉及一個實體,所以我沒有真正明白這個想法..感謝任何幫助!

回答

2

沒有,你需要三個實體。您可以將「Books」視爲您正在使用的CoreData數據庫。 CoreData數據庫隨後包含一些名爲book的實體。

我認爲你的數據模型有點奇怪,但我想它對你的應用程序是有意義的。其映射到CoreData我想:

添加實體書,頁,文本

添加BOOKID,PAGEID,文本ID分別給他們。

然後從加關係,並從文本

到那時,你應該能夠通過詢問有

圖書所有頁面打印出一整本書=你感興趣的書

,然後下令所有這些網頁的PAGEID

和秩序,要求有 所有文字=當前頁面

然後訂購這些文本的textld

可能存在的問題是文本可以具有多個值,如上面的XML中所示。您可以通過添加另一個名爲Value的實體來使用它,但是我可能通過直接向實體添加「value」和「type」屬性來解決此問題。 (您可以在打印頁面時使用「value」作爲第二個排序鍵。

+0

感謝您引導我進入正確的方向!(我如何檢索「文本」對象的屬性(書<--->>文字<--->>文本)使用NSFetchedResultsController?) – Dan 2011-03-21 14:20:16