swift可选的意外错误

时间:2014-10-29 13:01:25

标签: class swift optional

我是新来的。我对错误感到困惑。这个快速的代码会导致我无法理解的错误。它仅来自Apple文档“可选链接作为强制解包的替代方法”

class Person {
    var residence: Residence?
}
class Residence {
    var numberOfRooms = 1
}

let john = Person()
john.residence = Residence()
john.residence.numberOfRooms = 5   

//错误在这里:'住所?'没有名为'numberOfRooms'的成员

1 个答案:

答案 0 :(得分:4)

residence的{​​{1}}属性是可选的,因此要访问其内容,您必须将其解包。您可以使用可选链接来执行此操作:

Person

这意味着:如果居住地不是零,则继续评估表达式右侧的内容,否则取消。

该错误似乎是无稽之谈,因为john.residence?.numberOfRooms = 5 ^ 确实有一个名为Residence的属性。关键是numberOfRooms是一个可选类型,而optionals是枚举的实例john.residence - 它没有Optional<T>属性。使用可选链接从枚举(即可选)中解包numberOfRooms实例,因此错误消失,因为Residence具有该属性。

Optional Chaining的更多信息(请注意这是问题中提到的文档)