【发布时间】:2014-10-20 09:42:12
【问题描述】:
在我用 Swift 编写的 iOS 应用中,我有一个 Error 类,它从 NSError 扩展而来。
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'
是否可以在调用super.init 之前在init 中获取Class 对象?我知道这听起来很奇怪,但我认为我的示例说明了我为什么需要它。
【问题讨论】:
标签: ios swift initialization xcode6.1-gm-seed