如何通过menuId获取餐厅?

时间:2012-01-06 15:03:30

标签: iphone cocoa-touch cocoa core-data

我在我的应用程序中设置了核心数据,有两个实体:餐厅和菜单。大约有30家左右的餐厅和6个菜单。一个菜单可以属于几家餐馆。

但是,每个Restaurant实体都有一个menuId字段。有没有办法根据餐厅实体的menuId检索特定的菜单实体?

即使它们是相同的,我也存在多次存储值的问题。我该如何防止这种情况发生?

我对Core数据很陌生,所以任何最佳实践技巧都会受到赞赏!

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用NSFetchRequest按ID来检索菜单,但实际上最好从您的餐馆实体到您的菜单实体定义关系(反之亦然) 。在内部,它与菜单ID属性几乎完全相同,但使用起来更方便。

答案 1 :(得分:0)

您正在遵循数据库方法,基于表和ID来链接这些表。这在Core Data中是错误的,您必须遵循对象图方法,CoreData会以对您完全透明的方式将其转换为相应的SQlite数据库。

所以给定实体°餐厅“和”菜单“你会创建: - 在实体“餐厅”中与“菜单”的1对多关系称为“菜单” - 在实体“菜单”中与“餐馆”的1对多关系称为“餐馆”

您只需将每个餐厅菜单添加到NSSet,对应于给定菜单的菜单关系,反之亦然。正如您所看到的那样,您不需要关心ID,而只关心对象关系。

就重复数据而言,这取决于您。通常,您应该有一种方法来识别对象的唯一性(例如:菜单名称,餐馆名称),然后尝试从Core Data中检索它,然后再将其添加为新对象。