发现扩展时遇到Swift 4错误 – 在UI上不会加载照片

当我从照片库中选择一张照片来填充XCode 9.2中的UIImageView时,我收到以下错误消息:

  • [发现]发现扩展时遇到的错误:错误域= PlugInKit代码= 13“查询已取消”UserInfo = {NSLocalizedDescription =查询已取消}

模拟器可以访问照片库,我可以查看照片进行选择,但是当我点击“选择”选项选择照片时,会抛出错误,并且在选择器被取消后图像是没有填充UIImageView。

我已经搜索了Stack Overflow并且能够在执行此步骤时摆脱错误消息:从Xcode菜单打开:Product> Scheme> Edit Scheme>在您的环境变量上设置OS_ACTIVITY_MODE值设置禁用。 但是,这只是摆脱了错误,并没有修复我选择的照片没有填充UIImageView的问题。 我是Swift和Xcode的新手而且卡住了! 请帮忙!

这是我的代码:

import UIKit class HomeVC: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { @IBOutlet weak var avaImg: UIImageView! @IBOutlet weak var usernameLbl: UILabel! @IBOutlet weak var fullnameLbl: UILabel! @IBOutlet weak var emailLbl: UILabel! override func viewDidLoad() { super.viewDidLoad() //get user details from user global var (from database) let username = (user!["username"] as? String)?.uppercased() let fullname = user!["fullname"] as? String let email = user!["email"] as? String let ava = user!["ava"] as? String //populate labels on view usernameLbl.text = username fullnameLbl.text = fullname emailLbl.text = email } @IBAction func edit_click(_ sender: AnyObject) { //select ava let picker = UIImagePickerController() picker.delegate = self picker.sourceType = UIImagePickerControllerSourceType.photoLibrary picker.allowsEditing = true self.present(picker, animated: true, completion: nil) //selected image func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { let image = info[UIImagePickerControllerEditedImage] as? UIImage avaImg.image = image self.dismiss(animated: true, completion: nil) } } } 

两个问题:

  • didFinishPickingMediaWithInfo的签名是错误的。 在Swift 3+中它是

     func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
  • 委托方法必须位于类的顶层(不是在另一个方法中)

     @IBAction func edit_click(_ sender: Any) { //select ava let picker = UIImagePickerController() picker.delegate = self picker.sourceType = .photoLibrary picker.allowsEditing = true self.present(picker, animated: true, completion: nil) } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { //selected image let image = info[UIImagePickerControllerEditedImage] as? UIImage avaImg.image = image self.dismiss(animated: true, completion: nil) }