Vấn đề ban đầu của bạn là:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
Thành viên sơ thẩm 'chuyên mụcPerPage' không thể được sử dụng trên loại 'Báo cáo'
bài viết trước chỉ ra một cách chính xác, nếu bạn muốn một thuộc tính được tính toán , =
dấu hiệu bị xóa.
Khả năng bổ sung cho lỗi:
Nếu mục đích của bạn là "Đặt giá trị thuộc tính mặc định bằng cách đóng hoặc chức năng" , bạn cũng chỉ cần thay đổi một chút. (Lưu ý: ví dụ này rõ ràng không có ý định làm điều đó)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
Thay vì loại bỏ =
, chúng tôi thêm()
vào để biểu thị một đóng cửa khởi tạo mặc định. (Điều này có thể hữu ích khi khởi tạo mã UI, để giữ tất cả ở một nơi.)
Tuy nhiên, lỗi chính xác tương tự xảy ra:
Thành viên sơ thẩm 'chuyên mụcPerPage' không thể được sử dụng trên loại 'Báo cáo'
Vấn đề là cố gắng khởi tạo một thuộc tính với giá trị của một thuộc tính khác. Một giải pháp là tạo bộ khởi tạo lazy
. Nó sẽ không được thực thi cho đến khi giá trị được truy cập.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
bây giờ trình biên dịch là hạnh phúc!
numPages
thay vì đóng cửa xóa dấu bằng:var numPages: Int { return categoriesPerPage.count }