UITableViewController
을 신속하게 덮어 씁니다.이 중 두 개의 필수 변수는 다음을 사용하여 초기화됩니다. Error in Swift class: Property not initialized at super.init call :이 이후 self
의 weak
참조 UITableViewDataSource
프로토콜을 구현하고 나를 여기에 설명 된대로 예상된다 Property not initialized at super.init call
에러주고있다으로 이제 문제는 그 tableView
재산Swift 클래스의 오류 : super.init에서 초기화되지 않은 속성 - 초기화 매개 변수에서 self를 사용해야하는 속성을 초기화하는 방법
class VideosListViewController: UITableViewController {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.datasourceOfflineVideos = ASDataSource(tableViewController: self)
self.datasourceOnlineVideos = ASDataSource(tableViewController: self)
}
// MARK: - Variables
var datasourceOnlineVideos:ASDataSource
var datasourceOfflineVideos:ASDataSource
}
를 사용하는 self
참조가 필요하는 데 사용됩니다.
스위프트의 컴파일러는 두 단계의 초기화가 오류없이 완료되었는지 확인하기 위해 네 도움이 안전 검사를 수행
지정된 초기화는 클래스에 의해 도입 된 "모든 속성이 초기화되어 있는지 확인해야합니다 체크 한 안전 슈퍼 클래스 이니셜 라이저에 위임하기 전에
발췌 : Apple Inc.의 "Swift Programming Language". iBooks. https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11
그래서 내 질문은 :
는 신속 클래스의 인스턴스 변수 내가 그렇게 할 수있는 방법, 여기 ASDataSource
형태 변수처럼 초기화 할 self
참조를 필요로하는 경우? 빠른 날 현재 내가 사용하고 super.init()
를 호출하기 전에 init()
의 초기화 내에서 사용자 self
에 저를 허용하지 않는 모든 인스턴스 변수를 initiazing 전에 super.init()
전화를 허용하지 않기 때문에
문제를 해결하기위한 선택적 변수. 그러나 학습 목적을 위해 나는 그것을 어떻게하는지 알고 싶습니다. 당신은 당신의 초기화의 순서는 super.init/속성 반전이 사전 :
감사합니다. 이것은 나를 위해 일했습니다 :) 한 가지 더 :이 경우에는 데이터 소스 변수를 초기화하기 전에 super.init를 호출해야합니다. – iMemon