Вашою початковою проблемою було:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
Учасника екземпляра "kategorijePerPage" не можна використовувати для типу "ReportView"
попередні повідомлення правильно вказують, якщо ви хочете обчислити властивість , =
знак помиляється.
Додаткова можливість помилки:
Якщо вашим наміром було "Встановлення значення властивості за замовчуванням із закриттям або функцією" , вам потрібно лише трохи змінити його. (Примітка: цей приклад, очевидно, не мав цього робити)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
Замість того, щоб видаляти значення =
, ми додамо ()
для позначення закриття ініціалізації за замовчуванням. (Це може бути корисно при ініціалізації коду інтерфейсу, щоб зберегти все в одному місці.)
Однак трапляється точно така ж помилка :
Учасника екземпляра "kategorijePerPage" не можна використовувати для типу "ReportView"
Проблема намагається ініціалізувати одну властивість зі значенням іншої. Одне рішення - зробити ініціалізатор lazy
. Він не буде виконаний, поки не отримано доступ до значення.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
тепер компілятор радий!
numPages
а не про закриття, видаліть знак рівності:var numPages: Int { return categoriesPerPage.count }