2012-01-06 83 views
0

我在我的應用程序中設置了核心數據,包含兩個實體:餐廳和菜單。有大約30個餐館和6個菜單。一個菜單可以屬於幾家餐館。如何通過menuId獲取餐廳?

但是,每個Restaurant實體都有一個menuId字段。有沒有辦法根據Restaurant實體擁有哪個menuId來檢索特定的菜單實體?

我也有一個問題,值被存儲不止一次,即使它們是相同的。我怎樣才能防止這種情況發生?

我對核心數據很新,所以任何最佳實踐提示將不勝感激!

謝謝!

+1

請記住,核心數據不是數據庫。這是一個可以持久化的對象圖。 – 2012-01-06 15:13:34

回答

1

你可以使用一個NSFetchRequest通過它們的ID來檢索菜單,但它實際上將是更好的定義從您的餐廳實體關係到你的菜單實體(反之亦然)。在內部,它與你的菜單id屬性幾乎完全相同,但使用起來更加方便。

0

您正在遵循數據庫方法,基於表和ID來鏈接這些表。這在Core Data中是錯誤的,您必須遵循對象圖方法,並且CoreData會以對您完全透明的方式將其轉換爲相應的SQlite數據庫。

因此,在實體「餐廳」和「菜單」中,您將創建: - 在實體「餐廳」中與「菜單」的一對多關係稱爲「菜單」 - 與「Restaurant」的一對多關係稱爲「餐館」

您只需將每個餐館菜單添加到與給定菜單的菜單關係相對應的NSSet,反之亦然。這樣你就不需要關心ID,而只需關心對象關係。

就重複的數據而言,這取決於你。通常情況下,你應該有一種方法來確定一個對象的唯一性t(例如:菜單名稱,餐廳名稱),然後嘗試從核心數據中檢索它,然後將其作爲新對象添加。