webentwicklung-frage-antwort-db.com.de

Swift 4.2 imagePickerController Problem

Der Versuch, Chat-Client von Swift 4 bis Swift 4.2 und mit Picker ich Probleme gefunden.

UIImagePickerControllerEditedImage Ein Wert vom Typ "[String: Any]" mit einem Index vom Typ "UIImagePickerController.InfoKey" kann nicht subskribiert werden.

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

Die Methodensignatur wurde in geändert

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

Sie sollten eine Warnmeldung für den Funknamen sehen

Instanzmethode 'imagePickerController (: didFinishPickingMediaWithInfo :)' entspricht nahezu der optionalen Anforderung 'imagePickerController (: didFinishPickingMediaWithInfo :)' des Protokolls 'UIImagePickerControllerDelegate'

Der Kandidat hat einen nicht passenden Typ '(UIImagePickerController, [String: Any]) -> ()'

Verschieben Sie 'imagePickerController (_: didFinishPickingMediaWithInfo :)' in eine andere Erweiterung, um diese Warnung auszuschalten

Machen Sie 'imagePickerController (_: didFinishPickingMediaWithInfo :)' privat, um diese Warnung auszuschalten

Hier deklarierte Anforderung 'imagePickerController (_: didFinishPickingMediaWithInfo :)' (UIKit.UIImagePickerControllerDelegate)

18
Ashley Mills

In Swift 4.2 imagePickerController Delegate-Methoden hat sich ein wenig geändert. Bitte überprüfen Sie den folgenden Code.

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)
    }

}

Dies wird sicher funktionieren.

9
Purnendu roy

so was

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)
    }
}

Der obige Code löste die Warnung und das Bild wurde erfolgreich hochgeladen

0
sara