Il tuo problema iniziale era:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
Il membro dell'istanza 'categoriePerPage' non può essere utilizzato sul tipo 'ReportView'
i post precedenti indicano correttamente, se si desidera una proprietà calcolata , il =
segno è errato.
Ulteriore possibilità di errore:
Se il tuo intento era "Impostazione di un valore di proprietà predefinito con una chiusura o una funzione" , devi anche modificarlo leggermente. (Nota: questo esempio non era ovviamente destinato a farlo)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
Invece di rimuovere il =
, aggiungiamo ()
per indicare una chiusura di inizializzazione predefinita. (Questo può essere utile durante l'inizializzazione del codice UI, per tenerlo tutto in un unico posto.)
Tuttavia, si verifica lo stesso errore esatto :
Il membro dell'istanza 'categoriePerPage' non può essere utilizzato sul tipo 'ReportView'
Il problema sta provando a inizializzare una proprietà con il valore di un'altra. Una soluzione è creare l'inizializzatore lazy
. Non verrà eseguito fino all'accesso al valore.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
ora il compilatore è felice!
numPages
piuttosto che una chiusura, elimina il segno uguale:var numPages: Int { return categoriesPerPage.count }