Xcode 8 - swift 3:创建具有未知类型的图像格式是一个错误

时间:2016-10-31 17:17:47

标签: swift3 uiimagepickercontroller ios10 xcode8.1

使用UIImagePicker选择图像时出错:

[Generic] Creating an image format with an unknown type is an error

我正在使用Xcode 8.1和Swift 3。 我已经在网上搜索过但似乎没有解决我的问题,请帮助!

这是我的代码:

class TabBarController: UITabBarController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

var isSelected: Bool = false
var imgPicker: UIImagePickerController = UIImagePickerController()

override func viewDidLoad() {
    super.viewDidLoad()
    //imgPicker = UIImagePickerController()
    imgPicker.delegate = self
    imgPicker.allowsEditing = false
    imgPicker.sourceType = .photoLibrary
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    imgPicker.dismiss(animated: true, completion: nil)

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        self.performSegue(withIdentifier: "toPostPicture", sender: image)
    }
}

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

func askImagePickerSource(sender: UIViewController) {
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {
        let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

        let cameraAction = UIAlertAction(title: "Camera", style: .default, handler: { (action: UIAlertAction) in
            self.imgPicker.sourceType = .camera
            self.imgPicker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .camera)!
            sender.present(self.imgPicker, animated: true, completion: nil)
        })
        let photoLibraryAction = UIAlertAction(title: "Photo Library", style: .default, handler: { (action: UIAlertAction) in
            self.imgPicker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
            sender.present(self.imgPicker, animated: true, completion: nil)
        })
        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (UIAlertAction) in
            sender.dismiss(animated: true, completion: nil)
        }

        alert.addAction(cameraAction)
        alert.addAction(photoLibraryAction)
        alert.addAction(cancelAction)

        sender.present(alert, animated: true, completion: nil)
    } else {
        self.imgPicker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
        sender.present(self.imgPicker, animated: true, completion: nil)
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toPostPicture" {
        if let postPictureVC = segue.destination as? PostPictureVC {
            if let image = sender as? UIImage {
                postPictureVC.image = image
            }
        }
    }
}

}

2 个答案:

答案 0 :(得分:3)

我面临同样的问题,没有将代表添加为' self '对于UIImagePickerController。添加后,我能够从图库中获取所选图像。但即使将委托添加为 self 并且能够访问图像(在ImageView上显示),我仍然会得到相同的错误。经过对SO的进一步研究后,我发现这只是一个错误而且不会以任何方式影响应用程序。

另见"Creating an image format with an unknown type is an error Objective-C Xcode 8"

答案 1 :(得分:0)

您可以在选择器代理中发布.debugDescription参数的info吗?

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