Masalah awal Anda adalah:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
'CategoriesPerPage' anggota Instance tidak dapat digunakan pada jenis 'ReportView'
posting sebelumnya dengan benar menunjukkan, jika Anda menginginkan properti yang dihitung , =tandanya salah.
Kemungkinan tambahan untuk kesalahan:
Jika maksud Anda adalah untuk "Menetapkan Nilai Properti Default dengan Penutupan atau Fungsi" , Anda hanya perlu sedikit mengubahnya. (Catatan: contoh ini jelas tidak dimaksudkan untuk melakukan itu)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
Alih-alih menghapus =, kami menambahkan ()untuk menunjukkan penutupan inisialisasi default. (Ini dapat berguna saat menginisialisasi kode UI, untuk menyimpan semuanya di satu tempat.)
Namun, kesalahan yang sama persis terjadi:
'CategoriesPerPage' anggota Instance tidak dapat digunakan pada jenis 'ReportView'
Masalahnya adalah mencoba menginisialisasi satu properti dengan nilai properti lainnya. Salah satu solusinya adalah membuat penginisialisasi lazy. Ini tidak akan dijalankan sampai nilainya diakses.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
sekarang kompilator senang!
numPagesdaripada penutupan, hapus tanda sama dengan:var numPages: Int { return categoriesPerPage.count }