如何使用核心數據建模可變查找表?核心數據查詢表
說我有一張名爲「繪畫」的表格。每幅畫可以有一個或多個「顏色」,如「紅色」,「藍色」等。因此,「顏色」表是共享的。
我該如何建模?
我希望能夠通過添加或刪除顏色來修改「顏色」表。
如何使用核心數據建模可變查找表?核心數據查詢表
說我有一張名爲「繪畫」的表格。每幅畫可以有一個或多個「顏色」,如「紅色」,「藍色」等。因此,「顏色」表是共享的。
我該如何建模?
我希望能夠通過添加或刪除顏色來修改「顏色」表。
如果您希望能夠從穿越一個顏色到所有使用該顏色的繪畫對象,那麼你會想使用多對多繪畫 - >>顏色與多對立的關係顏色 - >>繪畫。這似乎可能是你正在尋找的。
另一方面,如果您不需要從顏色遍歷到繪畫,那麼這可能是您想要放棄反向關係並且只需要繪製多個繪畫的罕見情況之一。 >顏色。
編輯
如果您希望能夠刪除是由繪畫引用的色彩,那麼你可能想保留這兩個實體之間的關係相反。此外,您需要在顏色 - >>繪畫和繪畫 - >>顏色關係上定義「刪除規則」。在這兩種情況下,「無效」似乎是最佳選擇。所以,當一個顏色被刪除時,所有引用它的繪畫都會簡單地將該引用取消(刪除)。同樣,當一幅繪畫被刪除時,引用它的所有顏色都將停止引用它。
換句話說,不應該檢查查找失敗。也就是說,防守編碼總是很好的做法。
謝謝。我想知道「查找表」方面。我想在任何繪畫開始創建之前添加一些顏色項目,以便我可以向用戶提供這些選項。如果繪畫#1在創建繪畫#2時使用綠色,我想「查找」現有顏色值並顯示它們。我想我可能需要一個單獨的桌子或「plist」或其他東西。 – Christopher 2011-04-24 05:30:34
我打算用可用顏色的查找數據創建第三個表格,然後引用Colors表格中的ID值。如果在爲繪畫加載顏色時發生查找失敗,則我知道此顏色已被刪除。有可能是一個更優雅的方式來處理這個問題。我希望在未來找出更好的辦法。 – Christopher 2011-04-24 20:19:52
查找表方面應該相當簡單。基本上,您將顯示某個實體的所有對象(即Color)。 – westsider 2011-04-25 17:35:20
是的,多對多關係是對此進行建模的正確方法。
然而,一個問題是我想要一個包含可供選擇的「可用」顏色的表格,可以對其進行編輯(添加/刪除)。所以每幅畫都會有一張用戶顏色表。那麼第三張桌子是否需要?我如何保持所有表同步?我認爲這些問題的答案將爲我解決這個問題。 – Christopher 2011-04-24 20:37:05
你需要的數據模型是這樣的:
Painting{
name:string
colors<<-->>Color.paintings
}
Color{
name:string
paintins<<-->>Painting.color
}
發現另一個帖子,可能會幫助,但仍然不是在船上呢... http://stackoverflow.com/questions/1903177/coredata-many-to-many-relationships-and-nspredicate – Christopher 2011-04-23 05:05:57
好吧,似乎我只需創建一個具有反向關係的多對多關係即可。這很簡單嗎? – Christopher 2011-04-23 05:13:33
你有10多個問題,並且你沒有接受任何人。 – 2011-04-23 21:44:06