【发布时间】:2016-02-11 06:37:07
【问题描述】:
我觉得答案很明显,但我无法弄清楚,这对我来说似乎是一个反复出现的问题。基本上我想做这样的事情:
extension NSData {
convenience init(JSONObject: AnyObject) {
do {
self = try NSJSONSerialization.dataWithJSONObject(JSONObject, options: [])
}
catch {
self = nil
}
}
}
但是它不会让我简单地为 self 赋值。我一直用枚举来做这件事,但它不会让我用类来做。有没有办法使用在初始化器实现中创建的类的实例来实现便利初始化器?
【问题讨论】:
-
我的理解是 self 是不可变的,并且便利的 inits 必须使用指定的 inits 才能使它们工作,您是在初始创建实例中创建第二个实例,所以这将不起作用。相反,您将不得不创建一个仅返回新实例的扩展方法
-
好的,感谢您的确认。我想我最终只能使用静态方法而不是 init。
标签: swift