在Swift 4中无法使用firstIndex:where

时间:2019-03-05 05:17:54

标签: arrays swift

在字典数组上使用Incorrect argument label in call (have 'where:', expected 'of:')时出现firstIndex错误。

let d: [NSMutableDictionary] = [["u": 1], ["u": 2], ["u": 3]]

let i = d.firstIndex(where: { dict -> Bool in
    return dict["u"] == 2
})

incorrect arg label

为什么会发生这种情况以及如何解决?

1 个答案:

答案 0 :(得分:2)

Swift无法知道== 2是否可以与dict["u"]一起使用。 知道dict["u"]是一个Int,但是 Swift 却不知道,因为通过将这些字典键入为NSMutableDictionary,您已经隐藏了值的类型。

要解决此问题,请将[NSMutableDictionary]更改为[[String:Int]]