在我用 Swift 编写的 iOS 应用程序中,我有一个从 NSError 扩展而来的 Error 类。
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
类中的 init,并为子类错误对象拥有自定义域和代码。
它在 Xcode 6.0.1 上运行良好。问题是,它不会在 Xcode 6.1 中编译。MyError
我在类中得到这个编译器错误:
[...]
domain: self.classForCoder.ErrorDomain,
code: self.classForCoder.ErrorCode,
[...]
在 super.init 初始化之前在基础对象中使用属性“classForCoder”
是否可以在调用之前获取Class
对象?我知道这听起来很奇怪,但我认为我的例子说明了我为什么需要它。init
super.init