web-dev-qa-db-fra.com

Swift 4.2 Problème avec imagePickerController

Essayer de passer le client de chat de Swift 4 à Swift 4.2 et avec le sélecteur j'ai trouvé des problèmes.

UIImagePickerControllerEditedImage Impossible d'indiquer une valeur de type '[String: Any]' avec un index de type 'UIImagePickerController.InfoKey'.

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

    if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage {
        self.userProfileImage.contentMode = .scaleAspectFit
        self.userProfileImage.image = pickedImage
    }

    picker.dismiss(animated: true, completion: nil)
}
10
George Heints

La signature de la méthode a été modifiée en

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

Vous devriez voir un message d'avertissement pour le nom de la fonction

La méthode d'instance 'imagePickerController (: didFinishPickingMediaWithInfo :)' 'correspond presque à l'exigence facultative' imagePickerController (: didFinishPickingMediaWithInfo :) 'du protocole' UIImagePickerControllerDelegate '

Le candidat a un type qui ne correspond pas '(UIImagePickerController, [String: Any]) -> ()'

Déplacez 'imagePickerController (_: didFinishPickingMediaWithInfo :)' vers une autre extension pour faire taire cet avertissement.

Rendre 'imagePickerController (_: didFinishPickingMediaWithInfo :)' privé pour faire taire cet avertissement

Condition requise 'imagePickerController (_: didFinishPickingMediaWithInfo :)' a été déclaré ici (UIKit.UIImagePickerControllerDelegate)

18
Ashley Mills

Dans Swift 4.2 Les méthodes de délégation imagePickerController ont un peu changé. Veuillez vérifier le code ci-dessous.

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

    var selectedImage: UIImage?
    if let editedImage = info[.editedImage] as? UIImage {
        selectedImage = editedImage
        self.profileImage.image = selectedImage!
        picker.dismiss(animated: true, completion: nil)
    } else if let originalImage = info[.originalImage] as? UIImage {
        selectedImage = originalImage
        self.profileImage.image = selectedImage!
        picker.dismiss(animated: true, completion: nil)
    }

}

Cela fonctionnera à coup sûr.

9
Purnendu roy

comme ça

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
    picker.dismiss(animated: true, completion: nil)
    let image = info[UIImagePickerController.InfoKey.originalImage]! as! UIImage
    ...
}
4
yaoning

Swift4.2

 //MARK:- ImagePicker Controller Delegate
 //MARK:-

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    dismiss(animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    if let chosenImage = info[.originalImage] as? UIImage {
        yourimage.contentMode = .scaleAspectFill
        yourimage.image = chosenImage

    } else{
        print("Something went wrong")
    }
}
2
Maulik Patel
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

        if let pickedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
            yourImage.image = pickedImage
        }else{
            print("Something went wrong!!")
        }
    }
1
SCS
extension CameraViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let chosenImage = info[.originalImage] as? UIImage {
            selectedImage = chosenImage
            photo.image = chosenImage
        }
        dismiss(animated: true, completion: nil)
    }
}

Le code ci-dessus a résolu l'avertissement et l'image téléchargée avec succès

0
sara