質問: nil @IBAction func pressedBackButton(sender: AnyObject) { // ここでエラーが出るのでXcodeの指示通り // self.delegate?.backScreen!() // と言う風に修正。 self.delegate?.backScreen() } } ``` * エラーメッセージ `Value of optional type '(() -> ())?' not unwrapped; did you mean to use '!' or '?'?` 何卒よろしくお願いいたします。
回答: `backScreen`は`()->()`(何も引数に取らず何も返さない関数の型)ではなく、 `Optional<()->()>`(~のOptional型)です。 Optionalな型は、元の型ではなく、あくまでOptinalな型です。 したがってOptionalな型にアクセスしようとしたら「中身」を取り出さなければいけません その取り出す方法の指定が`?`または`!`です。 `?`は中身があったらやって下さいの意です。 ざっくり言えば中身がなければ何もしません。 `!`は中身があると決め打ちしてやって下さいの意です。 ざっくり言えば中身がなければ実行時例外です。 「swift optional」でググッて3番目ぐらいに出てきたページにわかりやすく書いてあります。 Swift殆ど知らないので自分の知るOptional相当の概念と 検索で調べて書きました。