Seu problema inicial foi:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
O membro da instância 'categoriesPerPage' não pode ser usado no tipo 'ReportView'
as postagens anteriores apontam corretamente, se você deseja uma propriedade computada , o =
sinal está incorreto.
Possibilidade adicional de erro:
Se sua intenção era "Definir um valor de propriedade padrão com um fechamento ou uma função" , você também precisará alterá-lo levemente. (Nota: este exemplo obviamente não tinha a intenção de fazer isso)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
Em vez de remover o =
, adicionamos()
para indicar um fechamento de inicialização padrão. (Isso pode ser útil ao inicializar o código da interface do usuário, para manter tudo em um só lugar.)
No entanto, ocorre exatamente o mesmo erro :
O membro da instância 'categoriesPerPage' não pode ser usado no tipo 'ReportView'
O problema está tentando inicializar uma propriedade com o valor de outra. Uma solução é fazer o inicializador lazy
. Não será executado até que o valor seja acessado.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
agora o compilador está feliz!
numPages
vez de um fechamento exclua o sinal de igual:var numPages: Int { return categoriesPerPage.count }