使用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的实例,我无法理解为什么我无法访问其属性但我被允许访问方法。
编辑:我知道我可以使用强制解包或可选绑定...我只是问为什么我不能以这种方式访问属性但我可以访问方法。
答案 0 :(得分:0)
嗯,你无法访问该方法,如果它是零 - 只有在mark?
不是nil时才会调用它。如果mark?
为零,则分配给该属性是没有意义的,如果它不是(并且您确定它不是'),您可以分配给mark!
。如果您不确定是否为零,请使用:
if let m = mark {
m.age = 40
}