2012-01-11 47 views
2

我一直在學習CoreData在我的應用程序中使用它,並且在生成sql模型時遇到了一些問題。如何創建適當的iOS CoreData數據庫模型?

我想有兩個實體(至少)。一個是Items,另一個是History。 邏輯:每個歷史實體應該沒有或多個ItemsItems不應該彼此重複 - 唯一。

我該如何在Xcode中建模?我需要像「History2Items」這樣的鏈接實體嗎?

我一直在努力這一段時間,但我可以找出適當的解決方案。

任何幫助?

UPDATE:

我做這個模型:

CoreData model

用於讀取數據的我用於預取的關係:

[request setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObject:@"item"]]; 

這就是我如何獲得項目每個歷史記錄:

History *history = [self.historyArray objectAtIndex:indexPath.row]; 
NSMutableArray *items = [NSMutableArray arrayWithArray:[history.item allObjects]]; 

就繞在項目陣列來獲得每個項目。

就是這麼簡單。感謝@Ashley Mills。

+0

我不確定,因爲我目前沒有任何Xcode。但據我所知,你可以在圖形編輯器中創建兩個實體並連接它們並設置適當的關係(1:n,n:1,1:1等)。 – 2012-01-11 14:27:47

+0

這就是我所做的,但不起作用。我需要某種「鏈接」實體。看看我的回答以下回答1。 – 2012-01-11 14:34:15

回答

2

創建ItemHistory實體和它們連接起來,如下所示:

enter image description here

如果Item可以屬於多個History,從一到多的變化之間的關係,以一個多TO-許多。

如果您打算按索引對歷史記錄的項目進行排序,則只需要一個鏈接實體,因爲每個項目對於給定歷史記錄可能具有不同的索引。例如,如果您按日期訂購商品,則不需要鏈接實體。

+1

我忘了提及物品實體應該有獨特的物品。這意味着兩個歷史元素可以具有相同的項目。在SQL世界中,我將創建一個鏈接實體。我對麼? – 2012-01-11 14:32:35

+0

這不是SQL,所以儘量忘記你從那裏知道!更新了我的答案。 – 2012-01-11 14:43:53

+0

你的意思是這樣的:http://i.stack.imgur.com/o7VK1.png? – 2012-01-11 15:43:51