2013-04-23 62 views
1

我正在努力處理核心數據的某些方面,即設置一個UITableView以列出來自多對多關係的數據。核心數據詳細信息查看來自多對多關係

我有三個實體,團隊,TeamDetails和玩家:

enter image description here

在第一個觀點,我列出了球隊的實體所有球隊的名字,然後輕拍每個單元塞格斯到中間用按鈕查看編輯團隊的細節或編輯團隊的球員。點擊一個按鈕後會跳到另一個列出團隊細節或玩家的UITableView。

列出TeamDetails的作品,因爲它是一對一的關係和靜態單元格表​​。

我試圖設置一個UITableViewController,它列出了與選定團隊關聯的所有玩家。所以我通過ManagedObjectContext等,以通過SEGUE表視圖控制器,如下圖所示:

else if ([segue.identifier isEqualToString:@"ShowPlayersSegue"]){ 
    NSLog(@"Setting ShowPlayersTVC as a delegate of EditPlayerTVC"); 
    ShowPlayersTVC *showPlayerTVC = segue.destinationViewController; 
    showPlayerTVC.delegate = self; 
    showPlayerTVC.managedObjectContext = self.managedObjectContext; 

    showPlayerTVC.team = self.team; 
    showPlayerTVC.player = self.team.playerDetails; 
} 

所以,在我showPlayerTVC我想獲得該組玩家針對特定團隊,則必須爲每一個行將playerName屬性顯示爲單元格textlabel.text。

我一直在閱讀教程,玩得很久很久沒有獲得太多的成功。我想我需要從NSSet創建一個Player對象數組,但我可以做,但我無法讓UITableview列出這些對象。我可能錯過了一些基本的東西,但任何建議,將不勝感激。

+0

A.您是否已驗證您的協調陣列包含正確的Players對象。 Nslog一個playerName或兩個,等等。如果有的話,顯示你的cellForRowAtIndexPath的代碼。 – user523234 2013-04-23 10:34:32

回答

1

首先,您的數據模型存在一些問題。

一對一的細節我不明白 - 爲什麼不只是添加屬性到團隊實體?此外,您可能希望將其中一些轉換爲更靈活的關係,如培訓師實體等。

此外,您的命名有缺陷,並且會導致編程錯誤或至少使您的代碼難以閱讀。注意單數/複數混淆。這裏是我的建議命名的實體/關係:

Team - players <--------------->> team - Player 

要你應該使用NSFetchedResultsController的表視圖中顯示的數據。讓FRC獲取播放器實體併爲其獲取請求提供以下謂詞:

[NSPredicate predicateWithFormat:@"team = %@", teamObject]; 

您的segue代碼幾乎是正確的。給新的視圖控制器一個team屬性,並在它的抓取結果控制器的上述謂詞中使用它。你不需要任何球員或「球員詳情」信息(他們無論如何都與球隊相關聯)。

+0

謝謝!這現在正在使用Fetched Results Controller。我也對你的觀點提出了一些看法 - 我一直在從教程開始構建它,而不是像我一樣去修復。在我採取進一步行動之前,可能是時候把所有的東西都整理一下。 – aritchie 2013-04-23 15:24:22