Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。available」というエラーが出てしまいました。これを解決するには、どのようにすれば良いのでしょうか。ご回答に心から感謝いたします。ステータスバーの高さ、上にカレンダーかデイトピッカーを置く。個の銅バッジネットを探しても、有益な情報がなかなか見つかりません。初歩的な間違いがあるのでしょうか。available)をGoogle等の検索にかければ、多数の記事が見つかります...が、日本語でこのエラーに関して原因と対応方法をきちんと記述した記事は確かに見つからないですね。(英語版のStackOverflowだけでも山ほど同じ質問が見つかります。そのほとんどは重複(Duplicate)とマークされて終わりですが。)「初歩的な間違い」と言うよりは「Swift言語独特の事情」で、ある程度の複雑さのコードを書くようになるまで現れないので、レベル的には初歩的ではない人たちも出くわすと戸惑うことが多いようです。私なりの回答を書いてみますが、できればあなたの方もご自身でコードが読みにくくなっているのを修正してもらえないでしょうか。「編集」をクリックした後編集エリアでコード部分をだだーっと全部選択、編集エリア上部の{}アイコンをクリックでOKです。16:53ご指導ありがとうございます。票2簡単に言うと、Swiftではインスタンスプロパティの初期化式に他のインスタンス変数(全てselfの参照、とみなされます)を使用することはできません。3.0.1))のこちらを熟読してもらわないといけないのですが、長文の英語なので要点をまとめると、Swiftの(クラス)イニシャライザでは、次のことを指定の順序で行わないといけません。上記の1.2.が済むまではselfにアクセスしてはいけないと言うことになっています。従ってイニシャライザよりも前に評価される初期化式の中では、(self経由でアクセスされる)他のインスタンスプロパティを使うこともできなければ、インスタンスメソッドを呼ぶこともできない、と言うことになります。(ちなみに上の1.2.がSwift用語で言う「2フェーズイニシャライズ」のフェーズ1と言うことになっています。従って他のインスタンスプロパティの値を使用するような(あるいはインスタンスメソッドの結果を使用するような)値で初期化したい場合は、以下のような対応方法があります。Optionalにしないといけないかもしれません)、それをsuper.init(...)の後で書き換える、と言う形になります。あなたのコードのように普通は自前のイニシャライザを定義したりしないViewControllerの場合には、イニシャライザを定義するだけで面倒なので、このパターンは使いにくいかもしれません。開き直って、viewDidLoad()の中で初期化すると言うのは大変よく見られるパターンです。lazy変数を使用する上記の制約からは例外に当たるのですが、lazy宣言されたインスタンスプロパティについては、初期化式の中で、他のインスタンスプロパティを含むことができます。lazyプロパティの初期化は、「初めてそのプロパティが参照される直前(従ってイニシャライザの実行より後)に実行される」「super.init(...)の前には実際には初期化されていないのだが、参照する際には必ず初期化されるので、未初期化のままの値が使われる可能性はない」ことから例外扱いされているのでしょう。参照されているプロパティをクラス定数かトップレベル定数にしてしまうクラスプロパティやトップレベルの変数・定数はクラスのイニシャライザが呼ばれるより前に初期化が完了しているので、クラス定義の中でインスタンスプロパティの初期値として問題なく使えます。self.view.addSubview(tableView)}のようになるでしょうか。2.のlazyを使用するなら、書き換えるのはこの1行になります。self.checkListItem5]各プロパティの参照にselfが必要なのは、lazyプロパティの初期化式が実はクロージャーの一種ということを考えれば納得がいくのですが、self.を付け忘れた時のエラーメッセージがいまいちわかりにくいです。ご自身で確かめてください。3.のパターンでも書き換えができますね。checkListItem1〜checkListItem5をクラスの外に追い出してトップレベル定数としてしまいます。//...}チェック状態を表すBool値は書き換えられるのでlet定数にはできないと思われるかもしれませんが、SwiftではArrayもDictionaryも値型なので、tableDataにはcheckListItem1〜checkListItem5の内容が初期値としてコピーされるだけで、tableDataさえvarで宣言されていれば、checkListItem1〜checkListItem5の方はletでも問題ありません。別クラスからViewControllerのそれらインスタンスプロパティをいじる、なんてことはしないというのが前提ですが。確実で簡単なのは最初の方法でしょうか。表題のエラーを解消すると、あなたのコードの中に潜むエラーが芋づる式に顔を出すようですが、そちらはまた別件ということで、ご自身で解決できない部分が残ればまた別スレでご質問いただいた方がいいと思います。個の銅バッジ大変高度で奥深いご教示をいただき感謝します。示していただいたものを試したところ、どれも潜んでいたエラーが芋づる式に御指摘とおり出てきました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。