Не удается использовать firstIndex:where в Swift 4

#arrays #swift

#массивы #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
})
  

неправильная метка аргумента

Почему это происходит и как это исправить?

Комментарии:

1. Вы не должны использовать NSMutableDictionary. Это Swift! Используйте словарь.

Ответ №1:

Swift не имеет способа узнать, == 2 может ли работать с dict["u"] . Вы знаете, что dict["u"] это значение Int, но Swift этого не знает, потому что, введя эти словари как NSMutableDictionary, вы скрыли типы значений.

Чтобы исправить это, измените [NSMutableDictionary] на [[String:Int]] .