我有一个名为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。
但它们对我的问题并没有什么帮助。
最佳答案
您可以遍历数组并创建一个字典,移动类型是键。
例如:
var totals: [MoveType: Int] = [:]
for item in performances {
totals[item.move] = item.score + (totals[item.move] ?? 0)
}
对于每个项目,这会将分数添加到相关移动类型的字典中,如果是第一个具有该移动类型的项目,则会创建一个新的字典条目。