2017-04-24 109 views
1

我不能爲我的生活得到這個工作。我有一個'Match'實體和一個'Players'實體通過多對多關係連接起來。對於每場比賽,我試圖創建一個從Core Data中的Players實體中提取的名稱字符串。這裏是什麼,我一直在努力與實現這一最新的化身:在Swift核心數據中獲取屬性與許多關係

let players = matchData[indexPath.row].value(forKeyPath: "players") as? NSManagedObject 
    let playerNames = players?.value(forKey: "firstName") as? NSMutableArray 

    let playersString = playerNames?.componentsJoined(by: ",") 

matchDataNSManagedObject在我的獲取數據被保持。 「玩家」是與「玩家」實體關係的名稱。而「firstName」是我嘗試串起來的屬性。

然而,這對每場比賽都返回'nil',即使我確實知道每場比賽都有保存的球員記錄。我可以很好地顯示其他matchData項目,但遇到這種多對多關係時遇到問題。

回答

1

value(forKeyPath: "players") as? NSManagedObject

如果players確實是一個一對多的關係,那麼這個代碼將永遠返回nil,因爲它會嘗試強制轉換爲NSManagedObject但實際類型是NSManagedObjectSet

value(forKeyPath: "players") as? Set<NSManagedObject>會讓你過去的第一個障礙。

你會自己動手指定託管對象的子類,那麼你將擁有爲所有這些東西生成的屬性,這將使你的代碼更清晰和更容易理解。

+0

謝謝。我會看到我如何繼續。是的 - 完全同意轉向子類方法! – mallowman