2010-06-17 188 views
2

我有兩個對象,一個Trip和一個Place。 A Trip表示從一個Place到另一個Place的旅程,即, a Trip需要fromPlacetoPlace。所以,這是一對一的關係,但我需要知道哪些是「來自」,哪個是「來」。我不確定如何在Core Data中對此進行建模。我創建了兩個實體(Trip, Place),現在我想建立關係,因此我有fromPlacetoPlace。我是否需要在名爲isFrom的Place實體或類似實體上添加額外的字段?核心數據和關係

如果這是在數據庫中,我只想對Place表中的id列,然後兩人在Trip表列 - fromPlaceIdtoPlaceId。如何在Core Data中實現類似的功能?

回答

2

我是否需要在Place實體上添加一個名爲isFrom或類似的額外字段?

是。最好不要將Core Data視爲數據庫的包裝;數據庫直覺有時會阻礙。
不要先考慮數據庫,然後嘗試將其轉換爲核心數據。在您學習如何使用核心數據時,只需將其視爲可保存到文件中的對象系統,並在應用程序的兩次啓動之間持續存在。

然後,從面向對象編程的角度來看,您有一個類Trip,它具有Place類的兩個實例變量fromPlacetoPlace

你想讓它保留在一個文件上。所以你創建了一個實體Trip,它有兩個關係fromPlacetoPlace,這兩個關係都是實體Place。而已!

更詳細地,fromPlacetoPlaceTrip都是一對一的關係。在Place中,您創建了兩對多的關係,如tripsStartingHeretripsEndingHere。然後,您將設置爲fromPlace的倒數,將tripsEndingHere設置爲toPlace的倒數。

+0

謝謝你的回答,但你已經把我最後一部分弄糊塗了:)我應該在Trip和Place之間建立一種1對2的關係,並且在Place實體上有一個isFrom字段?從你的最後一句話來看,這聽起來像我應該有兩個關係去放置,但是我不能設置倒數? – 2010-06-18 01:33:14

+0

我最終在Place實體上放了一個isFrom字段。 – 2010-06-22 01:59:30