【问题标题】:this class is not key value coding-compliant for the key此类不符合键的键值编码
【发布时间】:2017-10-15 14:52:22
【问题描述】:

*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ valueForUndefinedKey:]:此类与键 UIImagePickerControllerReferenceURL 的键值编码不兼容。”

@IBAction func btnReviewAction(sender : UIButton) {

    imagePicker.delegate = self
    imagePicker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
    imagePicker.modalPresentationStyle = UIModalPresentationStyle.popover

    imagePicker.preferredContentSize = CGSize(width: 1000, height: 400)
    imagePicker.allowsEditing = false
    imagePicker.isEditing = false

    appDel!.navController?.present(imagePicker, animated: true, completion: nil)

    imagePicker.popoverPresentationController?.sourceView = sender
    imagePicker.popoverPresentationController?.sourceRect = CGRect(x: 0, y: 0, width: sender.frame.size.width, height: sender.frame.size.height)
    isCaptureImage = false

}

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

    var mediaType: String = ""
    mediaType = info[UIImagePickerControllerMediaType] as! String
    if (mediaType == (kUTTypeImage as String)) {
        if isCaptureImage == false {
            let library = ALAssetsLibrary()

            library.asset(for: value(forKey: UIImagePickerControllerReferenceURL) as! URL!, resultBlock: { (asset) -> Void in

                let original: ALAssetRepresentation? = asset?.defaultRepresentation()

                let myimag = UIImage(cgImage: original?.fullScreenImage() as! CGImage, scale: CGFloat((original?.scale())! as Float), orientation: UIImageOrientation(rawValue: 0)!)
                self.imageAddView.image = self.resizeImage(image: myimag, newWidth: 600)

            }, failureBlock: { (error) -> Void in
                print("Failed to load captured image.")

            })

            picker.dismiss(animated: true, completion: { _ in })
        }

    }
 }

在这里我想重定向 PhotoGallery。并在UIImmage 上设置图像,但我在上面得到错误链接。

【问题讨论】:

  • library.asset(for: value(forKey: UIImagePickerControllerReferenceURL) 此行导致问题。错误描述说明了一切:UIImagePickerControllerReferenceURL 不可观察。
  • info[UIImagePickerControllerReferenceURL]替换value(forKey: UIImagePickerControllerReferenceURL)?
  • 是的,但我该如何解决?

标签: ios


【解决方案1】:

我不知道你为什么要使用 ALAssetsLibrary,如果你只是想要图像试试这个......

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

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {            
        self.imageAddView.image = self.resizeImage(image: image, newWidth: 600)
    }

    dismiss(animated: true, completion: nil)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多