的Xcode版本:7.3.1结构默认初始化器不会触发didSet
大家好,
我有最新的Uni斯坦福大学课程的iOS沿着以下。在正在创建的其中一个应用中,我们创建了一个具有多个属性的结构。
因为它是一个结构,我得到一个免费的初始化程序,我在我的控制器中调用。然后我使结构实例成为一个计算属性,以便didSet被调用。
这里的结构
struct FacialExpression
{
var eyes: Eyes = Eyes.Open
var eyeBrows: EyeBrows = EyeBrows.Normal
var mouth: Mouth = Mouth.Smile
enum Eyes: Int {
case Open
case Closed
case Squinting
}
enum EyeBrows: Int {
case Relaxed
case Normal
case Furrowed
func moreRelaxedBrow() -> EyeBrows {
return EyeBrows(rawValue: rawValue - 1) ?? .Relaxed
}
func moreFurrowedBrow() -> EyeBrows {
return EyeBrows(rawValue: rawValue + 1) ?? .Furrowed
}
}
enum Mouth: Int {
case Frown
case Smirk
case Neutral
case Grin
case Smile
}
}
这里是它在创建结构
class FaceController: UIViewController {
var expression = FacialExpression(eyes: .Open, eyeBrows: .Normal, mouth: .Smile) {
didSet {
updateUI()
}
}
}
该控制器的一个实例控制器的应用程序和初始化线的默认和唯一的控制器也被调用。
didSet()永远不会被调用。
任何人都可以解释为什么吗?
虽然Viktors的答案很奏效,但这是最好的答案,因为它确定了我做错了什么,而不是解决问题。 – Stephen