【发布时间】:2014-12-14 01:57:06
【问题描述】:
这是场景。我有三个班级:A、B 和 C。 A 类是 B 的子类。类C 需要将其实例变量之一传递给类A(我们称之为b)。我想确保它在C 初始化A 时发生,以确保我不会遇到b 为nil 的任何情况。以下是A 和B 的结构:
class B {
var a: Type1
required init(a: Type) {
...
}
}
class A : B {
var b: Type2
...
}
Swift 规则规定必须在初始化时定义非可选或隐式解包的变量。但是,由于我必须实现 B 的初始化(我无法控制 B;由 Apple 提供)我不能保证,因为我不能向 A 的初始化程序添加额外的参数。
我想确保使用A(b) 或A(a,b) 调用A,而不是A(a),以确保初始化b。我尝试寻找解决方案或考虑使用协议或扩展的解决方案,但我无法弄清楚。我得到的答案是通过this 回答,但它并没有真正做到我想要的。
所以我有两个问题(一个无效另一个): 1. [显而易见的] 有解决办法吗? (我是否遗漏了一些非常明显的东西?) 2. 我是不是搞错了?我应该使用不同的模式吗?
谢谢!
【问题讨论】:
标签: oop swift generics swift-extensions