具有属性和方法的可选类型行为

时间:2014-07-11 16:12:16

标签: swift

使用Optional chaining无法修改可选元素的属性是否正确?

class Something {
    var mark:Person?

    func changeAge{ 
        mark = Person()
        mark?.age = 40 <--- IT DOESN'T WORK.
        mark?.sayHello() <----- IT WORKS 
    }
}

尝试对age属性执行更改时出现此错误:Cannot assign to the result of this expression但我可以调用方法sayHello。由于两个元素booth属于Person的实例,我无法理解为什么我无法访问其属性但我被允许访问方法。

编辑:我知道我可以使用强制解包或可选绑定...我只是问为什么我不能以这种方式访问​​属性但我可以访问方法。

1 个答案:

答案 0 :(得分:0)

嗯,你无法访问该方法,如果它是零 - 只有在mark?不是nil时才会调用它。如果mark?为零,则分配给该属性是没有意义的,如果它不是(并且您确定它不是'),您可以分配给mark!。如果您不确定是否为零,请使用:

if let m = mark {
   m.age = 40
}