あなたの最初の問題は:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
インスタンスメンバー 'categoriesPerPage'はタイプ 'ReportView'では使用できません
以前の投稿は正しく指摘しており、計算されたプロパティが必要な場合は、=
符号が誤っています。
エラーの追加の可能性:
「クロージャーまたは関数を使用してデフォルトのプロパティ値を設定する」ことが意図されている場合は、わずかに変更するだけで済みます。(注:この例は明らかにそうすることを意図したものではありません)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
を削除する代わりに、デフォルトの初期化クロージャーを示すため=
に追加()
します。(これは、UIコードを初期化するときに、すべてを1か所に保持するのに役立ちます。)
ただし、まったく同じエラーが発生します。
インスタンスメンバー 'categoriesPerPage'はタイプ 'ReportView'では使用できません
問題は、あるプロパティを別のプロパティの値で初期化しようとしていることです。1つの解決策は、イニシャライザを作成することlazy
です。値がアクセスされるまで実行されません。
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
今、コンパイラは満足しています!
numPages
:閉鎖は等号を削除するのではなくvar numPages: Int { return categoriesPerPage.count }