mon - mise a jour iphone ios 10




imagePickerController: didFinishPickingMediaWithInfo est en conflit avec la méthode d'exigence facultative du protocole 'UIImagePickerControllerDelegate' (3)

La tête de fonction correcte est:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    <#code#>
}

Notez la String au lieu de NSObject dans la déclaration du dictionnaire d'informations.

Je ne suis pas sûr de savoir pourquoi les docs disent que vous devez écrire NSObject , mais String est le bon.

Si vous implémentez des méthodes de protocole, je vous recommande d'utiliser la complétion automatique de Xcode pour vous assurer que vous ne rencontrez pas de problèmes comme celui-ci.

Je ne suis pas sûr d'où Xcode obtient cette complétion automatique, mais il semble toujours être en phase avec le compilateur réel qui, à la fin, est la seule chose dont vous avez à vous soucier plutôt que certains docs apple en ligne! Surtout dans les périodes où les cadres changent constamment et même le langage lui-même est en cours de développement.

Voici l'erreur complète:

Méthode Objective-C 'imagePickerController: didFinishPickingMediaWithInfo:' fourni par la méthode 'imagePickerController (_: didFinishPickingMediaWithInfo :)' est en conflit avec la méthode d'exigence optionnelle 'imagePickerController (_: didFinishPickingMediaWithInfo :)' dans le protocole 'UIImagePickerControllerDelegate'

Il se produit sur le premier de cette fonction dans mon fichier ViewController.swift:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]){
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
        ImageView.contentMode = .ScaleAspectFit
        ImageView.image = pickedImage
    }

    dismissViewControllerAnimated(true, completion: nil)
}

J'essaie de suivre ce tutoriel: http://www.codingexplorer.com/choosing-images-with-uiimagepickercontroller-in-swift/

à partir de la méthode error, je comprends qu'il existe une méthode didFinishPickingMediaWithInfo qu'elle obtient de la classe de base imagePickerController et qu'elle n'aime pas que j'essaie de l'écraser. Mais c'est tout ce que je sais. Toutes les fonctions imagePickerController que je trouve en ligne ressemblent à ceci. Qu'est-ce que je fais mal?

J'utilise Xcode 7, si cela fait une différence. ]


Ci-dessous le format du délégué didFinishPickingMediaWithInfo de UIImagePickerController:

 public func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])

Dans votre cas, utilisez String au lieu de NSObject dans le paramètre function.


Si vous utilisez Xcode 7, vous ciblez peut-être iOS 9, dans lequel la signature de la méthode a légèrement changé:

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

à:

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

NSObject est NSObject String .

Dans Swift 3, il est devenu

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






xcode7