İ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!
numPages
Bir kapatma yerine bir hesaplanmış mülkiyet ilan edeceğinizi tahmin etmek eşit işareti silmek:var numPages: Int { return categoriesPerPage.count }