God*_*ike 2 arrays core-data ios swift
我对核心数据有疑问.我的实体看起来像这样:
在桌上游戏我想存储这个游戏中的所有玩家.问题是它们可能是2个或更多,所以我必须存储一个数组......我想到了两个解决方案..
我的第一个解决方案是将字符串存储到成员中,如下所示:
3,4,5,6,11
然后将其拆分为一个数组
let members = fetchedData.Players.characters.split{$0 == ","}.map(String.init)
Run Code Online (Sandbox Code Playgroud)
第二个:(我认为这是"更清洁"的版本)
我会让我的实体看起来像这样:
游戏(GameID,GameName,时间戳)
并添加另一个实体:
玩家(GameID,UserID)
你怎么看?如果我创建另一个实体,我有什么优势?(我想我会有更好的表现,但我也认为我需要很多数据)
如果要存储一组简单数据,如整数,那么使用可转换属性是合理的(参见Bartlomiej Semanczyk的回答).但请注意,从核心数据的角度来看,该属性只是一个字节包,没有任何意义,也没有搜索.此外,更改数组的一个条目会更改整个属性.
对于其他任何事情,最好建议使用其他实体.不要担心额外的存储开销.根据您拥有的玩家数量,您可能会或可能没有更好的表现,但这不是重点.
它更干净,为您提供更多选择,并且更适合核心数据模型.
具体来说,通过该实体,您现在可以轻松地了解诸如"玩家X正在玩哪些游戏?"之类的内容."有多少玩家在玩所有游戏?" "列出所有玩家"等.
现在,当您建立关系时,无需将"gameid"添加到玩家实体.
此外,当你建立关系时,你可能想要进行多对多的观察,因为游戏可以有很多玩家,并且玩家可以参与许多游戏.
| 归档时间: |
|
| 查看次数: |
6103 次 |
| 最近记录: |