我是Swift和iOS dev的新手。一般来说。我想知道如何在不同的词典中从同一个键中加总多个值。例如我有
具有相同键值对的20个词典[String:AnyObject],例如“高度”:20我想总结这些并计算平均值。 EG:
// Example dictionary
let player17: [String: AnyObject] = [
"Name": "Les Clay",
"Height": 42,
"Soccer Experience": true,
"Guardian Name(s)": "Wynonna Brown"
]
//在这里使用任何对象,因为它们都进入了一个大数组
答案 0 :(得分:1)
您可以使用 constructor(
public navController: NavController,
private formBuilder: FormBuilder,
private goalService: GoalService,
private authService: AuthService,
private navService: NavService,
public platform: Platform
) {
super()
this.contractForm = formBuilder.group({
termsAccepted: [false, Validators.required],
})
}
showToast(message, position) {
this.platform.ready().then(() => {
window['plugins'].toast.show(message, "short", position);
});
}
添加数字,如下所示:
reduce
注意: let totalHeight = allPlayers.reduce(0) { (p, c) -> Int in
return p + (c["Height"] as! Int)
}
方法需要知道每个字典中都存在c["Height"] as! Int
密钥,其值为"Height"
。否则,这将在运行时产生异常。
如果您的某些字典中没有正确的密钥,或者包含其他类型的值,则需要预先过滤或使用可选的强制转换,例如
Int
答案 1 :(得分:1)
鉴于
let players: [[String:AnyObject]] = ...
这是另一种方法
let sum = players.flatMap { $0["Height"] as? Int }.reduce(0, combine: +)
如果词典没有
Int
键的有效"Height"
值,则忽略该词典。