Ошибка с Xcode Swift 3: Неоднозначная ссылка на элемент ‘subscript’ и найден этот кандидат (Swift.Изменяемый индексируемый)

#ios #swift #segue

#iOS #swift #segue

Вопрос:

Мой код :

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

  let playerViewController = segue.destination as! PlayerViewController
  playerViewController.ID = channelsDataArray[selectedVideoIndex]["ID"] 
                            as? [String: AnyObject]

}
  

в строке:

 playerViewController.ID = channelsDataArray[selectedVideoIndex]["ID"] 
                          as? [String: AnyObject]
  

Ошибка :

найден этот кандидат (swift.MutableIndexable)
нашел этого кандидата (swift.array)
нашел этого кандидата (swift.indexable)

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

1. каков тип данных идентификатора в PlayerViewController

2. Тип данных идентификатора — строка

3. Вероятно, channelsDataArray это что-то безтипное , например, базовый массив, и если ID это строка, приведение всегда будет неудачным

4. Это тип channelDataArray канала var channelsDataArray: Array<Dictionary<NSObject, AnyObject>> = []

5. В Swift 3 замените AnyObject на Any , если вам не нужно явно AnyObject . Самый неопределенный словарь в Swift 3 — это [AnyHashable:Any] но если все ключи являются String use [String:Any] и если значения более конкретны, чем Any , используйте также более конкретный тип. Это значительно помогает компилятору