【Swiftエラー解説】Instance member ‘X’ cannot be used on type ‘Y’; did you mean to use a value of this type instead?について

筆者

こんにちは!Swift独学で勉強中の筆者です。日々エラーに悩まされています。

今日は初心者が陥りがちなエラーについてまとめていきます。

私も含め初学者にとっては、自作appを作ろうとすると数多なるエラーに悩まされると思います。エラー原因なども含めて理解しながら記事をまとめていきます。

私がこれまで経験してきたエラーについてはこちらにまとめてあるのでご確認ください。

あわせて読みたい
【2022年版初心者がiOSアプリ作ってみた】記事まとめ こんにちは。iOSアプリ開発を勉強し始め、無事にApp StoreにAppを申請できるレベルまで達しました。 こちらでは、準備からApp storeへのアップロードまで、一通りの流れ...
目次

エラー発生の背景

画面の遷移用にデータを格納しようとした時に出てきました。

エラー文:
“Instance member ‘変数X’ cannot be used on type ‘クラスY’; did you mean to use a value of this type instead?”

和訳すると、「インスタンス”変数X”はタイプ”クラスY”に使えません。このタイプの値を代わりに使いたいのですか?」ですね。

エラー解決法を考えると、画面遷移の時ではなくてこのエラーが出た場合でも、後述する方法で治ると思います。

原因

さて、問題となる場所を抜き出してみましょう。

let quizViewController = segue.destination as! QuizViewController
let index = tableView.indexPathForSelectedRow!.row
QuizViewController.series_quiz = series[index]

1行目でquizViewControllerをわざわざ宣言しているのに、3行目でQuizViewController(画面で定義しているClass)を宣言してしまっています。

以下のように、3行目を修正することで無事にビルド成功しました。

let quizViewController = segue.destination as! QuizViewController
let index = tableView.indexPathForSelectedRow!.row
quizViewController.series_quiz = series[index]

あわせて読みたい
非公開: たった1歩の運動で頭が良くなる!?運動が脳に与える効果とおすすめの運動方法まとめ 頭がいい人って、ちょっと羨ましいですよね。世の中には天才レベルに記憶力がある人がいたり、素晴らしい芸術をどんどん世に放っていく人がいたり。 遺伝による要素もあ...
よかったらシェアしてね!

コメント

コメントする

CAPTCHA


目次
閉じる