초기 문제는 다음과 같습니다.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
'ReportView'유형에서 인스턴스 멤버 'categoriesPerPage'를 사용할 수 없습니다.
이전 게시물이 제대로 당신이 원하는 경우, 지적 계산 된 속성을 의 =
기호가 잘못된 것입니다.
오류에 대한 추가 가능성 :
"닫기 또는 함수를 사용하여 기본 속성 값 설정" 하려는 경우 약간만 변경하면됩니다. (참고 :이 예제는 분명히 그렇게하지 않았습니다)
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }()
}
대신를 제거하는 =
, 우리는 추가()
기본 초기화 클로저를 나타 내기 위해 합니다. (이는 UI 코드를 초기화 할 때 한곳에 모두 유지하기 위해 유용 할 수 있습니다.)
그러나 똑같은 오류 가 발생합니다.
'ReportView'유형에서 인스턴스 멤버 'categoriesPerPage'를 사용할 수 없습니다.
문제는 한 속성을 다른 속성의 값으로 초기화하려고합니다. 한 가지 해결책은 이니셜 라이저를 만드는 것 lazy
입니다. 값에 액세스 할 때까지 실행되지 않습니다.
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
lazy var numPages: Int = { return categoriesPerPage.count }()
}
이제 컴파일러는 행복합니다!
numPages
클로저가 아닌 계산 된 속성을 선언 할 것으로 예상 되면 등호를 삭제하십시오.var numPages: Int { return categoriesPerPage.count }