Swift로 작성된 iOS 응용 프로그램에는 NSError에서 확장되는 Error 클래스가 있습니다.super.init 전에 init에서 classForCoder 호출
class MyError: NSError {
class var ErrorDomain: String { return "com.domain.app.error" }
class var ErrorCode: Int { return 0 }
init(data: [String: AnyObject]) {
let userInfo: [String: AnyObject] = [
"data": data
]
super.init(
domain: self.classForCoder.ErrorDomain,
code: self.classForCoder.ErrorCode,
userInfo: userInfo
)
}
[...]
}
는 또한 위의 하나에서 확장 다른 오류 클래스가 있습니다
class MyError2: MyError {
override class var ErrorDomain: String { return "com.domain.app.error2" }
override class var ErrorCode: Int { return 0 }
[...]
}
내가 MyError
클래스에서 초기화를 사용하고 서브 클래 싱 된 오류 객체에 대한 사용자 정의 도메인과 코드를 가질 수있는 방법입니다.
Xcode 6.0.1에서 제대로 작동했습니다. 문제는 Xcode 6.1에서 컴파일되지 않는다는 것입니다. 나는 라인에 MyError
클래스에서이 컴파일러 오류 : 기본 오브젝트의 특성 'classForCoder'의
[...]
domain: self.classForCoder.ErrorDomain,
code: self.classForCoder.ErrorCode,
[...]
사용는 super.init이
init
에Class
개체를 가져 그것을
을 것이 가능 초기화하기 전에 super.init
으로 전화하기 전에? 이상하게 들릴 수도 있지만, 필자는 필자에게 필자가 필자에게 필자가 필자에게 필자가 필자에게 필자가 필요로하는 이유를 보여주고 있다고 생각한다
작성할 수 있습니다. 불행하게도, init이'MyError2'에서 호출 될 때, 새로운 객체는 MyError2 클래스 대신에 MyError로부터 도메인과 코드를 가질 것입니다. 내가 맞습니까? – Darrarski
네, 당신 말이 맞습니다. 죄송합니다, 그것에 대해 생각하지 않았습니다. – marcusficner