2017-03-08 32 views
1

我有點困惑如何在CoreData中建模?這是一個相當簡單的概念,我希望能夠追蹤玩家在特定遊戲中玩了多久。所以,我有以下對象(簡化爲簡潔起見):核心數據和中間體

Player 
- name 
- currentGamePlayedTime 
(1:1 relationship to Team) 

Team 
- name 
(1:1 relationship with Player) 
(1:Many relationship with Game 

Game 
    - date 
    (Many:1 relationship with Team) 

我希望能夠回頭看一個球員的上場時間在一定的遊戲,或者看整個團隊的出場時間在一場比賽中。但我不確定如何建模。使用SQL方法,我會有一箇中間表(如下所示),並且有15個左右的入口,每個玩家在遊戲中玩的一個以及他們玩的相應時間。

GameRecord 
- GameID 
- PlayerID 
- TimePlayed 

我的應用程序能夠鍛鍊一個球員多少在目前的比賽中出場,並將其存儲目前Player對象上,但我不知道長期的解決方案,它的出場時間,以保存到相應的遊戲對象 - 無論是直接在對象上還是通過中間遊戲。我看過一些people do use intermediates。但是我也已經讀過使用SQL實踐並不是思考對象圖的寫法。所以只是想要一個這樣的東西應該如何建模的想法。

回答

1

使用中間實體來建模許多關係是完全合法的。事實上,在你想存儲有關關係本身的信息的情況下,這是必要的。

Core Data Programming Guide中有一個例子,名爲「基於它的語義建模關係」(不管是什麼意思)。他們的例子是一種自反的關係,但這個觀點適用於任何多元關係。

+0

非常感謝,我很高興有辦法確定! :-)因此,在我完成了我在比賽中的所有追蹤之後,最終我擁有了所有的球員以及他們所有的上場時間。創建中間件的過程是什麼?我只是循環播放器,並讓'gameRecord = GameRecord(context:managedObjectContext),gameRecord.playedTime = 15,gameRecord.gameRelationshipName = Game,gameRecord.playerRelationship = Player,嘗試managedObjectContext.save()..' – Jonnny

+1

是的,正好。 CoreData會自動更新應該是多對多的反向關係。 – pbasdf

+0

非常感謝! :-) – Jonnny