Swift:如果它们具有相同的键

时间:2018-04-03 13:28:07

标签: arrays swift

我有一个名为Performance的Realm Object类,看起来像这样

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

但它们对我的问题并没有多大帮助。

1 个答案:

答案 0 :(得分:1)

您可以遍历数组并创建一个以移动类型为关键字的字典。

例如:

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

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