Swift:如果数组的自定义对象元素具有相同的键,则合并它们
Posted
技术标签:
【中文标题】Swift:如果数组的自定义对象元素具有相同的键,则合并它们【英文标题】:Swift: Merge custom object elements of an Array if they have the same key 【发布时间】:2018-04-03 13:28:07 【问题描述】:我有一个名为Performance
的领域对象类,看起来像这样
class Performance: Object
@objc dynamic var move = ""
@objc dynamic var score = 0
当我打印 Realm 对象的结果时,我会得到类似这样的结果
[Performance
move = Run;
score = 3;
, Performance
move = Walk;
score = 3;
, Performance
move = Run;
score = 2;
]
然后我尝试将领域结果转换为一个数组,以便我可以合并具有相同动作的表演并添加他们的分数,以便我可以向用户显示他们的哪个动作得分最高和最低。
我想知道是否有机会将Performance
与相同的移动合并并添加它们的分数,以便数组看起来像这样。
[Performance
move = Run;
score = 5;
, Performance
move = Walk;
score = 3;
]
我尝试过一些解决方案,例如 One、two 和 three。
但它们对我的问题并没有真正的帮助。
【问题讨论】:
【参考方案1】:您可以遍历数组并创建一个以您的移动类型为键的字典。
例如:
var totals: [MoveType: Int] = [:]
for item in performances
totals[item.move] = item.score + (totals[item.move] ?? 0)
对于每个项目,这会将分数添加到相关移动类型的字典中,如果它是具有该移动类型的第一个项目,则会创建一个新的字典条目。
【讨论】:
只需使用Dictionary(groupingBy:)
。以上是关于Swift:如果数组的自定义对象元素具有相同的键,则合并它们的主要内容,如果未能解决你的问题,请参考以下文章
如何将数组转换为对象并在此对象Javascript中添加相同的键?