我对编程非常陌生,所以我希望我能正确解释这一点,但有些背景:我目前在Core Data中有一个Restaurant
实体,用户可以添加新对象(如Sbarro,McDonalds,PizzaHut,ShakeShack等餐厅)。我还有一组.csv预加载的菜单项(使用我在Core Data中制作的MenuItem
实体),其中包括炸薯条,比萨饼,汉堡包,鸡肉等等。
我现在设置的是用户可以从餐馆列表导航到的详细视图。有一个'菜单'按钮会显示我的菜单项列表,其中包含“是”'或者没有'可以选择的选项。这会在菜单项数组中映射到Bool
isAvailable
属性。
目前,我能够保存一家餐馆是否有龙虾,但是当点击任何其他餐馆时,龙虾也会显示出来(显然这是因为麦当劳没有服务龙虾的问题)因为我正在更改主菜单项数组中的Bool
。
我的问题是:如何为每个餐厅生成菜单项数组的实例,以便菜单项'可以保存isAvailable
状态吗?在最理想的情况下,如果我对主要餐厅进行了更改,每个餐厅的菜单项数组都会更新,但这听起来好得令人难以置信。我已尝试在Core Data中的Restaurant
和MenuItem
个实体之间建立多对多关系,但我无法通过我的方式弄清楚如何访问菜单项餐厅对象。
答案 0 :(得分:0)
通常的做法是摆脱isAvailable
属性,而是使用多对多关系来跟踪哪个餐馆有哪些菜单项。您没有为每个MenuItem
创建一个新的Restaurant
集,您可以为每种类型创建一个MenuItem
,并将每个类型仅与每个拥有该项目的餐馆相关联。
例如,给定两个Restaurant
个实例,
myRestaurant1.name = "McDonald's"
myRestaurant2.name = "Seafood Wonderland"
...以及只有其中一个提供的MenuItem
,
myMenuItem.name = "Lobster"
将菜单项添加到一个餐馆的menuItems
关系中。使用Xcode 8自动类生成,这将类似于
myRestaurant2.addToMenuItems(myMenuItem)
使用该关系查找每个餐厅的菜单项:
let restaurant1MenuItems = myRestaurant1.menuItems
let restaurant2MenuItems = myRestaurant2.menuItems
这会为您提供NSSet
个菜单项。此时,myRestaurant1MenuItems
不包含龙虾,但myRestaurant2MenuItems
不包含龙虾。