Su problema inicial fue:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
El miembro de instancia 'categoriesPerPage' no se puede usar en el tipo 'ReportView'
las publicaciones anteriores señalan correctamente, si desea una propiedad calculada , el =
signo es erróneo.
Posibilidad adicional de error:
Si su intención era "Establecer un valor de propiedad predeterminado con un cierre o función" , también necesita cambiarlo ligeramente. (Nota: este ejemplo obviamente no estaba destinado a hacer eso)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
En lugar de eliminar el =
, agregamos ()
para denotar un cierre de inicialización predeterminado. (Esto puede ser útil al inicializar el código de la interfaz de usuario, para mantenerlo todo en un solo lugar).
Sin embargo, se produce exactamente el mismo error :
El miembro de instancia 'categoriesPerPage' no se puede usar en el tipo 'ReportView'
El problema está tratando de inicializar una propiedad con el valor de otra. Una solución es hacer el inicializador lazy
. No se ejecutará hasta que se acceda al valor.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
¡ahora el compilador está feliz!
numPages
lugar de un cierre, elimine el signo igual:var numPages: Int { return categoriesPerPage.count }