2011-06-23 21 views
0

我需要創建一個與自身具有一對多關係的Core Data實體(想想包含子文件夾的文件夾:我需要訪問某個文件夾的所有子文件夾以及任何子文件夾的父文件夾)。指向自己的核心數據關係?

  1. 是否有一種簡單的方法可以使用標準核心數據關係來完成此操作,而無需輔助的一對多實體?

  2. 我想我可以通過使用我自己的關鍵字段輕鬆實現這個「舊方法」 - 但是有沒有簡單的方法來定義Core Data中的自動遞增字段? (我可以使用基於時間的值而不是自動遞增的值,但由於多種原因,我不喜歡該解決方案)。

+0

爲什麼你不想使用一對多? – sosborn

回答

3

核心數據沒有字段。不要試圖將核心數據視爲像SQL這樣的程序性非對象API的術語。你只會迷惑自己。

在覈心數據中創建嵌套關係是微不足道的。要讓實體建模目錄結構,您只需要:

Folder{ 
    name:string 
    parent<<-->Folder.children 
    children<-->>Folder.parent 
} 

任何特定文件夾都有一個父級和多個子級。

不要將數據模型中的實體誤認爲活動對象的圖形。數據模型中的實體只是定義同樣抽象實體的抽象屬性和關係,並且可以非常簡單。實際的活動圖形與它所模擬的現象一樣複雜。

例如在這種情況下,數據模型就像上面那樣簡單,一個實體具有一個屬性和兩個關係。活動圖形將如同使用數千個唯一的Folder對象和數百萬個關係建模的文件系統一樣複雜。

+0

在提出問題之前,我嘗試了這種方法。問題是,如果我在定義這兩個關係後查看實體圖,我會看到一個箭頭從實體指向自身,一邊是雙箭頭,另一邊沒有任何東西,這讓我感到驚訝。 –

+2

這就是它應該看起來像。請記住,實體類似於類而不是實例/對象。它們是抽象的。指向實體本身的箭頭正確地傳達了數據模型的設計,即「文件夾」對象與其他「文件夾」對象有關係,而不是另一類對象。有時候,根據實體圖形的相對位置,當線條繪製時可以隱藏箭頭。這只是顯示器的視覺神器。 – TechZen