web-dev-qa-db-ja.com

タイプ '()-> _'の値を指定されたタイプの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
 }
16
Jameel

構文の問題のようです、試してください

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
}
6
jokeman

profileImageViewにクロージャーを含めるようコンパイラーに指示しています。 profileImageViewにそのクロージャの結果を含めたい場合は、クロージャを呼び出すために括弧を追加する必要があります。

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

閉じた後の括弧に注意してください。これは、変数を初めて参照するときに、クロージャーを呼び出すresultを変数profileImageViewに割り当てます。

編集:

タイプ(<something>) -> typeが表示されたら、それはクロージャです。 ->ビットは、パラメーターを戻り値の型から分離します。 Swiftのエラーメッセージを解読するのは難しい場合がありますが、これは、予期したものではなく、クロージャーを返す手がかりです。

48
Duncan C

計算されたプロパティを実行するには、末尾に括弧を追加する必要があります。

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
Mukesh Shakya