2010-02-04 87 views
4

我有訂單表,其中包含有關特定訂單(何時開始,有多少人等等)的信息,並且該訂單表具有多個與菜單項目表的關係。我稱這種關係爲「orderItems」。反向關係警告 - 請求使用反向關係的做法

編譯器給我警告,「Order.orderedItems - 一對多的關係沒有逆:這是一個高級設置(沒有對象可以在多個目的地的特定關係)」

如何你通常做反比關係嗎?我是否需要在菜單項上創建一個新的關係以指向「訂單」,並將「反向關係」設置爲「orderedItems」? (實際上,我沒有理由將這些數據保存在菜單項目表中)

有人可以向我解釋爲什麼或者至少指出爲什麼我需要創建反向關係的原因菜單項目表。

在此先感謝,

回答

18

我遇到了這個警告和問題呢!這裏是你需要知道的......

可以說你有兩個表 - 汽車和司機。您可以定義一對一的關係 - 一個車對一個車手,但不能反向。

所以,現在,如果您創建一輛汽車併爲其分配一個驅動程序,如果您稍後刪除該驅動程序,然後嘗試訪問car.driver,則您的程序將崩潰。 Car.driver不會是零 - 它會導致程序崩潰。

所以,如果你不創建一個反轉,你永遠不會檢查是否有零,如果驅動程序已被刪除,甚至不能安全地使用car.driver。

我不喜歡XCode如何設置。它應該默認爲反轉,並在改變它的屁股疼痛。

建立一個逆簡單。只需在XCode中打開xcdatamodel,單擊現有關係,然後選中反向框。

+0

很好的解釋;) – 2010-02-05 09:58:52

+1

我不明白。按照你的比喻,你不能訪問car.driver,除非你已經宣佈它開始,我沒有。 (在我的模型中,'駕駛員'表需要知道'汽車'表,但不需要反向)。這只是核心數據'你應該可能需要反向關係,所以讓我們發出警告'? – RonLugge 2012-06-03 22:07:50

4

通常,您應該始終添加反相關係。

不要考慮將要生成的表的核心數據。實際上,Core Data足夠智能,不會將數據放在多個表中。

專注於設計滿足您需求的數據模型(並添加相反的關係)。

+0

你好,謝謝你的分享。 – 2010-02-05 09:58:12

+0

「核心數據足夠智能,不會將數據放在多個表中。」將所有東西放在一張桌子上有什麼好處? – 2012-09-06 15:52:39

+0

@pat就通過關係鏈接兩個模型來存儲信息而言,Core Data僅將一個外鍵存儲在其中一個表上(並將它用於兩種關係)。對於多對多關係,它創建連接表並在其中創建新記錄。 – gerry3 2012-10-02 02:53:18