2016-11-11 88 views
0

我有一个CoreData对象调用Game和它有关系称为playedList。我希望它能保存一份数据字典。我不确定的事情。Coredata关系,保存字典

1)的关系是否有是一个NSSet? 2)如何将字典[String:Int]或[Player:Int]保存到该关系?

我曾试图将关系更改为NSData和使用

game.playedList = try NSJSONSerialization.dataWithJSONObject(myDictionary, options: []) 
    } catch { 
     print("JSON serialization failed: \(error)") 
    } 

不可接受的值类型为一对多的关系:

我有点不确定这个,因为它是我第一次与CoreData

回答

1

一个CoreData实体的关系必须是一个或多个其他CoreData实体。您不能像Dictionary一样定义Entity和非CoreData对象之间的关系。

您可以定义一个新的实体属性存储在该字典中的每个键(如果他们是可以预见的)。

或者你可以在你的字典存储为使用ValueTransformer数据属性(见Storing UIColor object in Core Data和类似)

+0

好了,在我的情况,你认为什么是存储谁发挥和一本字典的最佳方式他们玩的时间?从你的意思,我应该添加一个新的属性到我的游戏实体并将其设置为Transformable,然后将其保存为NSData? – Jonnny

+0

如果你存储可预测的数据,那么它听起来像你缺少一个实体类型。也许在你的情况,这是一个'Replay'或'GameRecord'包含'duration'和'playerName'属性,甚至还有一个关系到一些'Player'实体。 – Jonah

+0

那么我有一个'游戏'实体,那个游戏属于'Team','Players'属于'Team'。我想要一种存储方式,哪些球员在每场比赛中打球以及他们打了多少球。我知道我可以拥有一名玩家的NSSet,这是我目前拥有的。但不确定最好的方法来节省每个球员的出场时间? (请记住,如果受伤等,一些球员可能不会在每场比赛中进行比赛)。你怎么看? – Jonnny