0

I am just update xcode(10.0) after update i was update as well as swift language version(4.2) but middle in progress of updatation swift language give me some error i really confused how to solve this:

Error:

Cannot subscript a value of type '[String : Any]' with an index of type 'UIImagePickerController.InfoKey'

@objc(imagePickerController:didFinishPickingMediaWithInfo:) func  imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo Info: [String: Any]){
    let mediatype = Info[UIImagePickerControllerMediaType] as! NSString
    if mediatype.isEqual(to: kUTTypeImage as String) {
        let imagecopy = Info[UIImagePickerControllerOriginalImage] as! UIImage
        profileImage.image = imagecopy
        if newpic == true {
            UIImageWriteToSavedPhotosAlbum(imagecopy, self, #selector(imageError),nil)
        }
    }
     self.dismiss(animated:true,completion:nil)
     onlyUploadImage()
}

Error Screen Shot

Screen Shot

Can someone please explain to me how to solve this , i've tried to solve this issue but no results yet.

Thank you

Sham Dhiman
  • 1,348
  • 1
  • 21
  • 59

3 Answers3

1

Delegate function has beed changed. Now it is

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

And You can get information from info dictionary as following

info[UIImagePickerController.InfoKey.mediaType]

and

info[UIImagePickerController.InfoKey.editedImage]

Hope this helps.

Abdul Rehman
  • 2,386
  • 1
  • 20
  • 34
1

Replace Your

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

with

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

Denis
  • 492
  • 2
  • 15
1

You are getting the error because of changes in Swift 4.2 version.

Use this code:

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

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.dismiss(animated: true)
}
nitin.agam
  • 1,949
  • 1
  • 17
  • 24