我有两个对象,Trip
和Place
。 Trip
表示从一个Place
到另一个Place
的旅程,即。 Trip
需要fromPlace
和toPlace
。所以,这是1比2的关系,但我需要知道哪个是“来自”,哪个是“来”。我不确定如何在Core Data中对此进行建模。我创建了两个实体(Trip, Place
),现在我想设置关系,所以我有一个fromPlace
和一个toPlace
。我是否需要在名为isFrom
的Place实体上添加额外字段,或类似的?
如果这是在数据库中,我会在Place
表上有一个id列,然后在Trip
表中有两列 - fromPlaceId
和toPlaceId
。如何在Core Data中实现类似的功能?
答案 0 :(得分:2)
我是否需要在名为isFrom的Place实体上添加额外的字段,或类似的?
是。最好不要将Core Data视为数据库的包装器;数据库的直觉有时会妨碍你 不要先考虑数据库,然后尝试将其转换为核心数据。在学习如何使用Core Data时,只需将其视为一个对象系统,可以将其保存到文件中,并在两次启动应用程序之间保持不变。
然后,从面向对象编程的角度来看,您有一个类Trip
,它有两个类fromPlace
的实例变量toPlace
和Place
。< / p>
您希望将其保留在文件中。因此,您创建了一个实体Trip
,它有两个关系fromPlace
和toPlace
,两者都是实体Place
。就是这样!
更详细地说,fromPlace
中的toPlace
和Trip
都是一对一的关系。在Place
中,您可以建立两对多关系,例如tripsStartingHere
和tripsEndingHere
。然后,将tripsStartingHere
设置为fromPlace
的倒数,将tripsEndingHere
设置为toPlace
的倒数。