Невозможно преобразовать значение типа '() → _' в указанный тип UIImageView

Я пытаюсь сделать вид UIImage кликабельным, но мне не везет. Каков наилучший способ выполнить эту задачу? Я получаю сообщение об ошибке: "Не удалось преобразовать значение типа"() → _ "в указанный тип" UIImageView "".

lazy var profileImageView: UIImageView = {
     let imageView = UIImageView()
     imageView.image = UIImage(named: "ic_file_upload_white_48pt")
     imageView.translatesAutoresizingMaskIntoConstraints = false
     imageView.contentMode = .scaleAspectFill

     imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectorProfileImage)))
     imageView.isUserInteractionEnabled = true
     return imageView
 }

Ответ 1

Похож на проблему синтаксиса, попробуйте

func profileImageView() -> UIImageView {
        let imageView = UIImageView()
        imageView.image = UIImage(named: "ic_file_upload_white_48pt")
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.contentMode = .scaleAspectFill

        imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectorProfileImage)))
        imageView.isUserInteractionEnabled = true
        return imageView
}

Ответ 2

Вы говорите компилятору, что хотите, чтобы profileImageView содержал замыкание. Если вы хотите, чтобы profileImageView содержал результаты этого замыкания, вам нужно добавить после них имена, чтобы вызвать замыкание:

lazy var profileImageView: UIImageView = {
  //your code here
  return imageView
}()

Обратите внимание на круглые скобки после закрытия. Это присваивает результат вызова замыкания вашей переменной profileImageView при первом обращении к переменной.

Редактировать:

Каждый раз, когда вы видите тип (<something>) → type его замыкание. Бит -> отделяет параметры от возвращаемого типа. Сообщения об ошибках Swift могут быть трудно расшифровать, но это подсказка, что вы возвращаете закрытие, а не то, что ожидается.

Ответ 3

Вы должны добавить парантез после окончания вычисляемого свойства, чтобы выполнить его.

lazy var profileImageView: UIImageView = {
     let imageView = UIImageView()
     imageView.image = UIImage(named: "ic_file_upload_white_48pt")
     imageView.translatesAutoresizingMaskIntoConstraints = false
     imageView.contentMode = .scaleAspectFill

     imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectorProfileImage)))
     imageView.isUserInteractionEnabled = true
     return imageView
 }()