Я работаю над созданием небольшого приложения, которое позволяет пользователю выбирать изображение для добавления к сообщению. Пользователь выбирает добавленное изображение (имеет распознаватель жестов касания) и получает доступ к библиотеке фотографий iOS. Затем пользователь выбирает изображение, и выбранное изображение должно заменить изображение с камеры по умолчанию. Я получаю следующую ошибку при выборе изображения из библиотеки: 2019-03-16 19:13:09.238959-0400 Spirit-App[34772:2211555] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo = {NSLocalizedDescription=query cancelled}. У меня есть настройка info.plist с 
Основываясь на моих операторах печати, которые я использую для отладки, я, кажется, вхожу в функцию imageTapped, но никогда не добираюсь до @objc func imagePickerController. Даже если я закомментирую @objc func imagePickerController, я все равно получаю сообщение об ошибке сверху. Итак, два вопроса:
Код:
class NewPostViewController: ViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var newPostImage: UIImageView!
@IBOutlet weak var postDescription: UITextView!
let imagePicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.clear
view.isOpaque = false
imagePicker.delegate = self
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tap:)))
newPostImage.isUserInteractionEnabled = true
newPostImage.addGestureRecognizer(tap)
}
@objc func imageTapped(tap: UITapGestureRecognizer) {
print("BUTTON WORKED!")
imagePicker.allowsEditing = false
imagePicker.sourceType = .photoLibrary
present(imagePicker, animated: true, completion: nil)
}
@objc func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
self.dismiss(animated: true, completion: { () -> Void in
})
print("Image Picker Complete")
newPostImage.image = image
dismiss(animated: true, completion: nil)
}
}





У вас неправильная подпись для метода делегата.
Изменять:
@objc func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
к:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
Вам также необходимо изменить весь код внутри этого делегата:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[.originalImage] as? UIImage {
newPostImage.image = image
}
picker.dismiss(animated: true, completion: nil)
}