我目前正在研究CoreData,需要为每个密钥保存多个值。在我的情况下,我只需要为CoreData中的单个Key保存几个字符串,最大值为9。
具体来说,我想为游戏保存玩家。我的游戏对象已经包含了这些玩家的关系对象,但我也希望将玩家名称保存为游戏对象本身的记录,因为玩家可以被我的用户删除,我希望我的游戏对象能够免疫。
我知道在Cloudkit中,您可以将某个密钥的值设置为例如"字符串集#34;,这可以在创建一对多关系时在CoreData关系中完成。我想知道在常规CoreData键值对中是否有按书的方式来执行此操作。
答案 0 :(得分:2)
将CoreData视为对象而不是低级数据存储更容易。它并不是真正设计为键/值系统(除非在任何对象的属性可以被认为是字典的意义上)。
对于您提供的示例,可能更符合CoreData的对象持久性样式,将已删除的玩家标记为不可用而不是删除它们,以便您的历史记录保持不变。
答案 1 :(得分:2)
您可以使用Transformable类型的属性来存储您的集合。 NSArray和NSSet符合NSCoding,因此CoreData可以为您处理所有数据转换,存档和取消归档。