В интернете я нашел разные варианты, но дальше мне ничего не помогло. Я новичок и я вам помогу. Я получу сообщение:

Невозможно добавить значение типа «[NSObject: Any]» с индексом типа «String».

private func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : Any]){
    let chosenImage = info[UIImagePickerControllerEditedImage] as UIImage
    let neuesBild = BildUndNotiz(bild: chosenImage, text: "")

    bildUndNotiz += [neuesBild]
    self.Spoonlist.reloadData()

    picker.dismissViewControllerAnimated(true, completion:
        {self.zeigeViewControllerFürBildUndNotiz(neuesBild)})

}

Большое спасибо вам

3
Daniel.P 1 Мар 2018 в 16:00

4 ответа

Лучший ответ

Решение SWIFT 4 .

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

guard let image = info[UIImagePickerController.InfoKey.originalImage]  
as? UIImage else {
  return
}

imagePicked.image = image
//dismiss(animated:true, completion: nil)
}
7
AVR 3 Окт 2018 в 11:16

Этот код устарел. правильная подпись метода теперь:

func imagePickerController(_ picker: UIImagePickerController,
                           didFinishPickingMediaWithInfo info: [String : Any])

Поскольку у вас неправильная сигнатура метода, info имеет неправильный тип и не может быть подписан строкой.

3
Rob Napier 1 Мар 2018 в 13:05

Объясняя ошибку:

info является объектом [NSObject : Any]. Так что это словарь, ключи которого являются NSObject объектом.

Вы делаете info[UIImagePickerControllerEditedImage], но UIImagePickerControllerEditedImage является строкой, а не NSObject, поэтому вы не можете выполнить такой индекс.

Вот что говорит ошибка.

Но это еще не все, я полагаю, что используемая вами версия Swift - Swift 4, ваш метод UIImagePickerControllerDelegate не должен вызываться, поскольку он не имеет хорошей подписи. Из документа:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])

Не

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : Any])

Замените его на документ из документа.

1
Larme 1 Мар 2018 в 13:07
func imagePickerController(_ picker: UIImagePickerController, 
      didFinishPickingMediaWithInfo info: [String : Any])

Этот метод принимает информацию как быстрый словарь типа [String: Any], где ключ словаря является типом значения. Но вы передаете словарь как [NSObject: Any], где ключом является объект или ссылочный тип. Поэтому в основном вы передаете неверный аргумент, а также не можете изменить сигнатуру метода делегата UIImagePickerControllerDelegate.

0
Boudhayan 1 Мар 2018 в 13:08