我有一个名为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;
}]

我尝试过几种解决方案,如Onetwothree
但它们对我的问题并没有什么帮助。

最佳答案

您可以遍历数组并创建一个字典,移动类型是键。
例如:

var totals: [MoveType: Int] = [:]
for item in performances {
    totals[item.move] = item.score + (totals[item.move] ?? 0)
}

对于每个项目,这会将分数添加到相关移动类型的字典中,如果是第一个具有该移动类型的项目,则会创建一个新的字典条目。

10-07 16:18