核心数据和关系

时间:2010-06-17 23:11:17

标签: iphone core-data

我有两个对象,TripPlaceTrip表示从一个Place到另一个Place的旅程,即。 Trip需要fromPlacetoPlace。所以,这是1比2的关系,但我需要知道哪个是“来自”,哪个是“来”。我不确定如何在Core Data中对此进行建模。我创建了两个实体(Trip, Place),现在我想设置关系,所以我有一个fromPlace和一个toPlace。我是否需要在名为isFrom的Place实体上添加额外字段,或类似的?

如果这是在数据库中,我会在Place表上有一个id列,然后在Trip表中有两列 - fromPlaceIdtoPlaceId 。如何在Core Data中实现类似的功能?

1 个答案:

答案 0 :(得分:2)

  

我是否需要在名为isFrom的Place实体上添加额外的字段,或类似的?

是。最好不要将Core Data视为数据库的包装器;数据库的直觉有时会妨碍你 不要先考虑数据库,然后尝试将其转换为核心数据。在学习如何使用Core Data时,只需将其视为一个对象系统,可以将其保存到文件中,并在两次启动应用程序之间保持不变。

然后,从面向对象编程的角度来看,您有一个类Trip,它有两个类fromPlace的实例变量toPlacePlace。< / p>

您希望将其保留在文件中。因此,您创建了一个实体Trip,它有两个关系fromPlacetoPlace,两者都是实体Place。就是这样!

更详细地说,fromPlace中的toPlaceTrip都是一对一的关系。在Place中,您可以建立两对多关系,例如tripsStartingHeretripsEndingHere。然后,将tripsStartingHere设置为fromPlace的倒数,将tripsEndingHere设置为toPlace的倒数。