İlk sorununuz:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
'ReportP' türünde örnek üyesi 'categoryPerPage' kullanılamaz
önceki yayınlar doğru bir şekilde işaret eder, hesaplanan bir özellik istiyorsanız , =işaret arızalıdır.
Hata için ek olasılık:
Eğer niyet etmek olsaydı "Bir Kapatma veya Function ile bir Varsayılan Özellik Değer ayarlama" , sadece hafifçe yanı değiştirmek gerekmez. (Not: Bu örnek açıkça bunu yapmak için tasarlanmamıştır)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
Bunun yerine kaldırma =, biz eklemek() varsayılan başlatma kapatmasını belirtmek için . (Bu, tek bir yerde tutmak için UI kodunu başlatırken yararlı olabilir.)
Ancak, aynı hata oluşur:
'ReportP' türünde örnek üyesi 'categoryPerPage' kullanılamaz
Sorun, bir özelliği diğerinin değeriyle başlatmaya çalışıyor. Bir çözüm başlatıcı yapmaktır lazy. Değere erişilene kadar yürütülmez.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
şimdi derleyici mutlu!
numPagesBir kapatma yerine bir hesaplanmış mülkiyet ilan edeceğinizi tahmin etmek eşit işareti silmek:var numPages: Int { return categoriesPerPage.count }