2011-09-04 48 views
1

我正嘗試使用Core Data來表示體育聯賽的賽程。在我的模型中,我有一個名爲Team的實體和一個名爲Game的實體。每個團隊都會有很多遊戲。每場比賽將有兩支球隊,一支被確定爲主隊,另一支被確定爲客隊。如何建立核心數據內的團隊,遊戲和主/客團隊關係模型?

在我目前的方法中,我已經在Game實體中定義了「homeTeam」和「awayTeam」關係。這些關係中的每一個都是一對一併將其目標設置爲團隊實體。我還在Team實體中定義了一個多對多的「遊戲」關係,其目標設置爲遊戲實體。

這種方法的問題是我不能以任何適當的方式設置反比關係。這需要團隊/遊戲關係與Game/homeTeam和Game/awayTeam關係相反,這是不允許的(據我所知)。我當然可以將這些定義爲單向關係,但是我開始收到Xcode警告,我不確定這是否是件好事。

我也考慮從遊戲實體中刪除awayTeam和homeTeam關係,並將其替換爲團隊關係。這種關係對Team來說是多對多的,最大值和最小值都是2.但是,這種方法不允許我區分主隊和客隊,我需要在我的應用程序中進行區分。

我很感激任何關於在CoreData中表示這種關係的最佳方式的建議。毫無疑問,我可以使用自己的數據庫層來實現這一點,但我寧願依賴CoreData,而不是在這裏提出本土解決方案。

回答

1

這裏是我會怎麼做:

Game有兩個一比一的關係,homeTeamguestTeam

Team有兩個一對多關係homeGamesoutGameshomeGames的倒數是homeTeam,而outGames的倒數是guestTeam

有意義嗎?

+0

感謝蒙迪 - 我沒有想到這一點,它確實有道理。我有這樣一個問題:有沒有一種簡單的方法來爲團隊提取所有遊戲的有序列表?當我爲Team實體建立單一的「遊戲」關係時,我打算實施一個獲取請求,該請求返回按日期排序的所有遊戲。我不確定現在所有的遊戲都是如此簡單,這些遊戲現在橫跨集合或家庭遊戲以及單獨收集客場比賽。 –

+0

最簡單的方法是將所有homeGames和outGames作爲Game類型的對象提取,然後以編程方式使用date屬性對數組進行排序。有幾十條記錄或更少,這應該不成問題。 – Mundi

+0

謝謝 - 我會試試。我也在嘗試使用一個獲取請求來返回所有匹配兩個表達式的「任意」的遊戲。第一個表達式查找與指定爲參數的團隊匹配的主隊,第二個表達式查找匹配的客隊。 –